繁体   English   中英

Angular TypeScript Pass服务功能

[英]Angular typescript pass service function

我在服务中有两种方法可以做非常相似的事情,因此订阅是相同的。 我想加入执行,因此在触发服务方法时

this.createNewUser(this.userModel, this.userDefaultGroupSelectedId)
            .subscribe(
            res => {
                this.msgs = ({ severity: "success", summary: "Success:\n", detail: res });
                this.userModel = new User();
                this.onConfirm.emit();
            },
            error => {
                this.msgs = ({ severity: "error", summary: "Error Message:", detail: error.Message ? error.Message : error.toString() });
            }

它会调用createNewUser,该方法将返回应该调用哪个函数

createNewUser(user: IUser, userDefaultGroupSelectedId: number): Observable<string> 
    {
        if (this.asRegistration == false) {
            return this.userAdministrationService.addNewUser(this.userModel, this.userDefaultGroupSelectedId);
        }
        else {
            this.userAdministrationService.registerNewUser(this.userModel);
        }
    }

但是这种方法不起作用,我Cannot read property 'subscribe' of undefined

我的服务:

addNewUser(user: IUser, userDefaultGroupSelectedId: number): Observable<string> {

    return this.http.post(this.addNewUserUrl)
        .catch(error => super.handleError(error))
        .map(response => response.json());
}

registerNewUser(user: IUser): Observable<string> 
{

    return this.http.post(this.registerNewUserUrl)
        .catch(error => super.handleError(error))
        .map(response => response.json());
}

问题似乎是您没有返回this.userAdministrationService.registerNewUser(this.userModel);的结果this.userAdministrationService.registerNewUser(this.userModel); 因此,在这种情况下函数的返回是undefined

尝试将其更改为:

return this.userAdministrationService.registerNewUser(this.userModel);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM