0
私は、Angular 4、ngrx、AngularFire2でプロジェクトを構築しました。私は現在ログインしているユーザーのuidを取得して、私の店に入れようとしています。AngularFire2 return ngrxエフェクトに適用可能
ご意見やご協力をいただければ幸いです。
エラー
ERROR TypeError: Cannot read property 'map' of undefined
at SwitchMapSubscriber.project (auth.effects.ts:22)
影響コード
@Effect() getAccountId$ = this.actions$
.ofType(ActionTypes.GET_ACCOUNT_ID)
.map(action =>
// This is line 22 where the error is coming
this.authService.getCurrentUserId()
.map(authObject => ({ type: ActionTypes.GET_ACCOUNT_ID_SUCCESS, payload: authObject }))
.catch(() => Observable.of({ type: ActionTypes.GET_ACCOUNT_ID_ERROR })));
サービスコード
のuserId:任意の; //任意のものとして宣言されます。これをObservableにしようとすると、this.userId = user.uidでコンパイルエラーが発生します。次のようにそれはあなたの助けをみんなに
userId: any;
getCurrentUserId(): Observable<any> {
this.afAuth.authState.subscribe(
(user: firebase.User) => {
if (user != null) {
this.userId = user.uid;
console.log('constructor auth object: ', user);
console.log('constructor userId: ', this.userId);
}
});
return this.userId;
}
'.ofType(ActionTypes.GET_ACCOUNT_ID)'行の前後に '.do(res => console.log(res))'を実行するとどうなりますか? – crash
あなたの 'this.userId'は' Observable'だとは思いません。 –
こんにちは、お返事ありがとうございます。コンパイルエラーが発生するので、私はその行の前に置くことはできませんが、Object {type: "GET_ACCOUNT_ID"、ペイロード: "}}を取得した後、私は問題が何かを解決し、それを修正する方法がわからない。基本的にauthオブジェクトの呼び出しはサブスクリプションなので、サブスクリプションが終了する前にthis.userIdをエフェクトに戻しますので、this.userIdが返されますundefined – ccocker