使用 intellij for Angular IDE 向我展示以下建议:
deprecated
Observable<LoginResult>.subscribe(
next?: (value: LoginResult) => void,
error?: (error: any) => void,
complete?: () => void):
Subscription
Instead of passing separate callback arguments, use an observer argument. Signatures taking separate callback arguments will be removed in v8. Details: https://rxjs.dev/deprecations/subscribe-arguments
rxjs
在此订阅。
this.loginService.login(request)
.subscribe(
next => (data: LoginResult) => {
if (this.authService.setToken(data.tokenType, data.accessToken)) {
localStorage.setItem('eMail', request.email)
this.router.navigate(['/dashboard']);
}
}, error => {
alert(error.error.message)
});
有人知道在这种情况下使用订阅的正确方法吗? 谢谢!
目前我认为我们不会更新 Angular,但将来我们不想重写每个订阅:D
使用
next
/error
键将订阅参数设置为对象:
this.loginService.login(request)
.subscribe({
next: (data: LoginResult) => {
if (this.authService.setToken(data.tokenType, data.accessToken)) {
localStorage.setItem('eMail', request.email)
this.router.navigate(['/dashboard']);
}
},
error: error => {
alert(error.error.message)
});
});
subscribe
并未被弃用,只是您正在使用的变体被弃用。
试试这个:
this.loginService.login(request)
.subscribe({
next => (data: LoginResult) => {
if (this.authService.setToken(data.tokenType, data.accessToken)) {
localStorage.setItem('eMail', request.email)
this.router.navigate(['/dashboard']);
}
}, error => {
alert(error.error.message)
}});
subscribe
只会接受一个参数,那就是观察者。
https://rxjs.dev/deprecations/subscribe-arguments
让我们更改您的代码以使用不同的
subscribe(...)
重载:
this.loginService.login(request).subscribe({
next: (data: LoginResult) => {
if (this.authService.setToken(data.tokenType, data.accessToken)) {
localStorage.setItem('eMail', request.email)
this.router.navigate(['/dashboard']);
}
},
error: error => {
alert(error.error.message)
}
});