【发布时间】:2020-02-05 16:04:33
【问题描述】:
有没有办法在 Angular 服务中而不是在 Angular 组件中(通过订阅)处理 RxJs POST 或 GET(或所有 CRUD 操作)的成功?
我想设置一个 BehaviorSubject 来发出用户已成功登录的信息。我正在考虑通过我的 BehaviorSubject (this.loggedIn.next(true)) 与各种同级组件分享成功结果,因为这些同级组件需要进行更改基于单个服务userLogin() 调用。
这是我的 AuthenticationService 中的 userLogin 方法和 BehaviorSubject:
private loggedIn = new BehaviorSubject<boolean>(false);
userLogin(user): Observable<any> {
return this.http
.post(this.apiUrl, user, httpOptions)
.pipe(catchError(this.handleError));
}
这是我想要的 AuthenticationService 的伪代码:
private loggedIn = new BehaviorSubject<boolean>(false);
userLogin(user): Observable<any> {
return this.http
.post(this.apiUrl, user, httpOptions),
this.loggedIn.next(true), <<--------
.pipe(catchError(this.handleError));
}
提前谢谢你!
【问题讨论】:
-
只需在服务中移动
subscribe吗?我不明白你的问题的重点,当然你可以这样做...... -
我也在订阅我的组件服务调用。可以吗?
-
嗯,不,你要求不要那样做......
-
因此我问是否有办法像处理
catchError一样处理成功? -
是的,将订阅移动到服务中,并使用
.next向您的行为主体发送数据!
标签: angular rxjs observable