gpt4 book ai didi

Angular2订阅 "this"被SelfSubscriber取代

转载 作者:太空狗 更新时间:2023-10-29 17:26:50 26 4
gpt4 key购买 nike

我在调用 WebAPI 方法来处理登录的授权组件中有一个登录功能。

login(username: string, password: string) {

let loginRequest = <ILoginRequest>{};
loginRequest.username = username;
loginRequest.password = password;

let loginUrl = this._webApiConfig.rootUrl + ':' + this._webApiConfig.serverPort + this._webApiConfig.authUrl;

return this._webApiDataContext.post(loginUrl, loginRequest)
.map(response => { return response.json(); });
}

它是这样调用的:

this._authorization.login(this.email, this.password)
.subscribe(this.success);

success(user) {
if (user.isAuthorized) {

// Set the cookie and redirect the user to the dashboard.
this._cookie.setCookie('auth', JSON.stringify(user), 1);
this._router.navigate(['Dashboard']);
}
}

当它到达成功方法时,“this”已被替换为 SafeSubscriber 对象。在 Angular 1 中,我使用了 ControllerAs 语法,但根据我在 Angular 2 中学到的知识,我不再需要了?我发现的所有示例都没有使用类似的东西。如果我将“vm”变量设置为等于“this”,我可以让它工作,但我仍然对为什么我看到的其他示例不需要这样做感到困惑。

谢谢

最佳答案

在这种情况下,您应该使用bind:

...subscribe(this.success.bind(this))

或箭头函数:

 ...subscribe(user => this.success(user))

关于Angular2订阅 "this"被SelfSubscriber取代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37218131/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com