Angular 4ログインアプリケーションがあります。login.cmponent.tsファイルにアクセスロジックを記述し、login.service.tsファイルにアクセスして認証サービスを再度呼び出します。
ログインコンポーネントから認証メソッドを呼び出すと、falseが返されます。 Angularコードを非同期で実行することがわかっているため、残りのコードを実行するまでに、認証サービスはtrueを返します。
これは私のコードです:
ログインコンポーネントメソッド:
this.loginService.setLoginData(
new LoginModel( this.userId, this.bankId, this.password )
).checkIfLoginSuccessfull();
Login.serviceメソッド:
this.authService
.attemptAuth(credentials);
認証サービス方式:
attemptAuth(credentials): void {
this.restService
.post('/authenticate', credentials)
.subscribe(
data => this.setAuth(data.token),
err => this.destroy());
}
コードは正常に機能しています。しかし、checkIfLoginSuccessfull()の実行が終了した瞬間に結果を取得したいと思います。私はメソッドを実行または呼び出していないことを知っています(Observablesは正しく)。
助けてください。 :)
これを囲む必要があります
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(...);