currentUserIdを必要とする多くのメソッドがあります。私は自分のAuthServiceを注入して、次のようにユーザーを取得して保存しています。
// AuthServiceコード
getAuthorizationState() {
return this.afAuth.authState;
}
//フィードコンポーネントコード
constructor(...auth: AuthService...) {
this.user = this.auth.getAthorizationState();
this.user.subscribe(
(value) => {
console.log('value', value);
this.currentUser = value;
}
);
}
// This tends to throw an error can not get property uid of undefined
getUserFeed(uri: string): Obervable<any> {
return this.getFeed(`feed/${this.currentUser.uid})`)
}
// So have been resorting to this
getUserFeed(uri: string): Obervable<any> {
this.user.map((user) => {return user.uid})
.flatMap((currentUserId) => {
return this.getFeed(`feed/${currentUserId})`)
});
}
問題:すべてのメソッドでそれを行わなければなりませんでした。Angularjsでは、この問題を解決するためにresolveメソッドを使用していると信じていることを覚えています。
質問:現在認証されているユーザーの情報を取得して保存するための「アプリグローバル」な方法はありますか?コンポーネントまたはインジェクターサービスのメソッドを呼び出すときにすでに存在しますか?
角ばったギッターに行き、私がやっていた観察可能なチェーンは確かに使用するパターンであると言われました。少し変更し、サービスとコンポーネントで使用するようにリファクタリングします。
getHomeFeedPostsWrapper(): Observable<any> {
return getUserId().map((user) => {
return user.uid;
}).switchMap((userId) => {
return this.friendly.getHomeFeedPosts(userId);
});
}
/**
* Helper methods
*/
getUserId() {
return this.auth.getAuthState().map((user) => {
return user.uid;
});
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加