@ngrx/store と @ngrx/effects で Angular 2 アプリを作成しています。
アクション/効果などの外にロジックを配置する場所と、サービス関数を呼び出す場所を理解するのに苦労しています。
たとえば、認証では...
- ユーザーがログインをクリックする
AUTH_REQUEST
と、ログイン認証情報をペイロードとしてアクションがディスパッチされます。 - エフェクトはこのアクションを探し、API を呼び出します。
- 成功した結果は
AUTH_SUCCESS
、応答オブジェクト内のトークン、ユーザー名などをペイロードとして使用してアクションを呼び出します。ペイロードはレデューサーに送られ、AuthState
.
例: でAuthEffects
@Effect() authenticate$ = this.updates$
.whenAction(AuthActions.AUTHENTICATE_REQUEST)
.switchMap(update => this.api.post('/authenticate', update.action.payload)
.map((res:any) => ({type: AuthActions.AUTHENTICATE_SUCCESS, payload: res.json()}))
.catch((err:any) => Observable.of({ type: AuthActions.AUTHENTICATE_ERROR, payload: err }))
);
のAuthReducer
case AuthActions.AUTHENTICATE_SUCCESS:
return Object.assign({}, state, <AuthState>{
processing: false,
failed: false,
isLoggedIn: true,
token: action.payload.token,
username: action.payload.username,
accountId: action.payload.accountId,
});
私が知りたいのは:
AUTH_SUCCESS
アクションが処理された後にページを変更するためにルーターを呼び出す場所。エフェクト リアクティブ チェーン内からこれを行うか、それとも....??AuthService
資格情報 (トークンなど) を LocalStorage に保存する必要があります。「トークンを保存する」ためにこれをどこに呼び出す必要がありますかauthService.store(userCredentials)
。
どんな助けでも感謝します。