我有一个Angular 4登录应用程序。我已经在login.cmponent.ts文件中编写了访问逻辑并访问了我的login.service.ts文件,该文件又调用了一个身份验证服务。
当我从登录组件调用authenticate方法时,它返回false。当它执行剩余代码时,身份验证服务返回true,因为我们以异步方式知道Angular运行代码。
这是我的代码:
登录组件方法:
this.authService
.attemptAuth(credentials);
Login.service方法:
attemptAuth(credentials): void {
this.restService
.post('/authenticate', credentials)
.subscribe(
data => this.setAuth(data.token),
err => this.destroy());
}
身份验证服务方法:
import matplotlib.pyplot as plt
plt.plot(x-axis,y-axis,data)
plt.plot(x-axis,y-axis,data)
plt.show()
代码工作正常。但是我想在执行checkIfLoginSuccessfull()的那一刻得到结果。我知道我没有做或调用方法(Observables正确)。
请帮忙。 :)
答案 0 :(得分:5)
你应该包围这个
this.restService
.post('/authenticate', credentials)
.subscribe(
data => this.setAuth(data.token),
err => this.destroy());
进入" Observable.create"。
Observable.create(observer => {
this.restService
.post('/authenticate', credentials)
.finally(() => observer.complete())
.subscribe(
data => observer.next(data.token)
err => observer.error(err);
}
然后
this.authService.attemptAuth(credentials).subscribe(...);