我有一个用于身份验证的私有方法。然后我有另一种方法(公共),我在我的组件中调用login
来进行实际登录。我希望能够订阅实际订阅私有login
方法的authentication
方法,以便我可以在登录时显示加载和其他消息,对每个视图执行不同的操作。有可能吗?
身份验证方法:
private userAuthenticate( email: string, password: string ) {
return this.httpPost(`${this.baseApiUrl}/auth?format=json&provider=login`, {userName: email, password: password}).subscribe(
res => this.saveJwt(res.bearerToken),
err => this.logError(err),
() => console.log("Authentication done.")
);
}
登录方式:
login( email: string, password: string ) {
this.logout();
return this.userAuthenticate(email, password);
}
我想订阅登录方法,以便我可以控制我的加载器和错误消息等。 请帮忙。
答案 0 :(得分:3)
您无法订阅Subscription
(由subscribe()
返回),您只能订阅Observable
。
要Observable
使用map()
代替subscribe()
,login()
的来电者可以进行订阅
private userAuthenticate( email: string, password: string ) {
return this.httpPost(`${this.baseApiUrl}/auth?format=json&provider=login`, {userName: email, password: password}).map(
res => this.saveJwt(res.bearerToken),
);
对于其他callabacks,如果你真的需要它们,你可以使用catch
和finally
运算符。