Я довольно новичок в 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
, который содержит параметр поиска. Я не могу назвать этот метод 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) {}
}