问题是:当 this.getPost())) 返回错误时,例如 404(它是返回 GET 的函数),然后代码this.loggedChange.emit(false)
没有执行,我不知道为什么。在这种情况下,我的loggedChangedHandler 输出错误。看起来像内部错误,在 swtichMap 之后,this.loggedChange 没有“观察到”。在 switchMap 之前它已经观察到,所以我认为它可能是线索,但我不知道为什么它会这样工作。如果第一个函数返回错误(this.authLogin - 它也返回 get),那么 this.loggedChange.emit 工作正常。
子组件:
login(): void {
this.authLogin(this.email, this.password)
.pipe(
tap(() => this.loggedChange.emit(true)),
switchMap(() => this.getPost())
)
.subscribe(
resp => {
//some code here
},
error => {
this.loggedChange.emit(false);
}
);
}
在父组件中我有这样的东西:
<login-component (loggedChange)="loggedChangeHandler($event)"></login-component>
并在 ts
loggedIn$ = new BehaviorSubject(false);
loggedChangedHandler(el: boolean): any {
this.loggedIn$.next(el);
}