我对 NgRx 很陌生。我想将值传递给效果。该值是要在服务中搜索的参数。
效果TS文件
export class UsersEffects {
searchParam: string;
@Effect()
users$ = this.actions$.pipe(
ofType(ActionTypes.SEARCH_USERS),
map(action => action.payload), //ERROR doesn't recognize payload
switchMap((payload) =>
this.githubSearch.getUsers(payload).pipe(
map(res => new UserActions.GetUsersSuccess(res)),
catchError(() => of({ type: '[Users API] Users Loaded Error' }))
)
)
);
constructor(
private actions$: Actions,
private githubSearch: GithubSearchService
) {}
}
如您所见,我有一个名为 的方法getParam()
,它订阅BehavioralSubject
包含搜索参数的 a。我无法getParam()
在我的效果中调用该方法。还有其他方法吗?还是直接将其Effect
从不同的.ts
文件传递给?我使用有效载荷吗?
组件 TS 文件
onSearch(): void {
this.githubSearchService.setSearchParam(this.searchForm.value.searchParam);
this.store.dispatch(new UsersActions.SearchUsers());
this.searchForm.reset();
}
减速机TS
case ActionTypes.SEARCH_USERS:
return action.payload;
行动 TS
export class SearchUsers implements Action {
readonly type = ActionTypes.SEARCH_USERS;
constructor(public payload: string) {}
}