このメソッドはauthProvider
プロバイダークラス内にあります。
_getUser() {
return this.afAuth.authState.subscribe(user => {
return user;
});
}
_
次のような別のクラスでサブスクライブしたいと思います。
_this.authProvider.getUser().subscribe(user => console.log(user));
_
getUser()
メソッド内でObservable
を返す方法について何かアイデアはありますか?
あなたのauthState
はすでに監視可能です。 authState
を返し、別の関数内でサブスクライブするだけです。他の作業の関数では、RxJS#map関数を使用できます。
getUser() : Observable {
return this.afAuth.authState.map(...);
}
....
login() {
getUser().subscribe(user => {
return user;
});
}
あなたはこのようなことをすることができます。次に、この関数を呼び出しているコンポーネントで、このオブザーバブルをサブスクライブできます。
getUser(): Observable<any> {
return Observable.create( (observer: Observer<string>) => {
this.afAuth.authState.subscribe(user => {
observer.next(user);
}, (err) => observer.error("error"));
});
}
アシュリー
getUser
関数内でサブスクライブしないでください。観察可能なものを返すだけです。
getUser() {
return this.afAuth.authState
}
戻り値の型を監視可能として設定する必要があります
getUser(): Observable<Type> {
return this.afAuth.authState;
});
}
関数を直接返し、別のクラスでサブスクライブできます。
getUser() {
return this.afAuth.authState();
}
オブザーバブルは、サブスクライブによって呼び出される関数と考えることができます。
this.authProvider.getUser().subscribe(user => console.log(user));