Использование Angular 6 и NGRX.
Я использую селектор магазина в эффекте, чтобы получить данные для запроса.После первого раза я вызываю действие SignalAction.LOAD_SIGNAL
, если в какой-то момент после этого происходит смена магазина, в результате которой селектор getRequestParams
обновляется.Запрос запускается без запуска действия.
Есть ли другой способ, которым я должен обработать это?Я только хочу, чтобы наблюдаемый поток полностью прошел через действие.
Я пробовал take(1)
после выбора хранилища, но тогда запрос работает только один раз.
@Injectable()
export class SignalEffect {
constructor(
private _signalService: SignalService,
private _actions$: Actions,
private _store$: Store<IStore>,
) {}
@Effect()
public fetchSignal(): Observable<IAction<SignalModel[] | HttpErrorResponse>> {
return this._actions$
.ofType(SignalAction.LOAD_SIGNAL)
.pipe(
switchMap((action: IAction<void>) => this._store$.select(getRequestParams)),
switchMap((requestParams: RequestParamsModel) => {
return this._signalService.getSignal(requestParams)
.pipe(
map((responseModel: SignalResponseModel | HttpErrorResponse) => {
if (responseModel instanceof HttpErrorResponse) {
return ErrorsAction.requestFailure(responseModel);
}
return SignalAction.loadSignalSuccess(responseModel.results);
}),
);
}),
);
}
}