Я сталкиваюсь с некоторыми трудностями при попытке вернуть несколько действий в моем эффекте NGRX. Я знаю, как вернуть несколько действий, но я пытаюсь настроить два набора действий для запуска на основе логического значения.
Код выглядит следующим образом:
@Effect()
loadCompanyDetail = this.actions$
.ofType(fromActions.COMPANY_DETAIL_LOAD)
.pipe(
switchMap(() => {
return this.companyService
.getCompanyByID(
fromUtility.obs2Str(
this.routerStore.select(fromRouter.getCompanyId)
)
)
.pipe(
switchMap(res => {
switch (res.success) {
case true:
const locations = res.data.locations;
const detail = res.data;
delete res.data.locations;
return [
new fromActions.CompanyDetailLoadSuccess(detail),
new fromActions.CompanyLocationsLoadSuccess(locations)
];
case false:
return [
// new fromActions.CompanyDetailLoadFailure(),
// new fromActions.CompanyLocationsLoadFailure()
];
}
})
);
})
);
Закомментированные действия, когда активный выдает следующую ошибку:
ОШИБКА в src / company / store / Effects / company-detail.effects.ts (34,23):
ошибка TS2345: аргумент типа '(res: {success: boolean; msg: string;
данные: компания; }) => (CompanyDetailLoadSuccess | CompanyLo ... 'не является
присваивается параметру типа '(значение: {success: boolean; msg:
строка; данные: компания; }, index: number) => ObservableInput '.
Тип '(CompanyDetailLoadFailure | CompanyLocationsLoadFailure) []' нельзя назначить типу "ObservableInput".
Тип '(CompanyDetailLoadFailure | CompanyLocationsLoadFailure) []' нельзя назначить типу
'ArrayLike.
Подписи индекса несовместимы.
Тип 'CompanyDetailLoadFailure | CompanyLocationsLoadFailure 'нельзя назначить типу
'CompanyDetailLoadSuccess | CompanyLocationsLoadSuccess.
Тип «CompanyDetailLoadFailure» нельзя назначить типу «CompanyDetailLoadSuccess | CompanyLocationsLoadSuccess.
Тип «CompanyDetailLoadFailure» нельзя назначить типу «CompanyLocationsLoadSuccess».
Типы свойств 'type' несовместимы.
Тип '"[КОМПАНИЯ ДЕТАЛИ] Сбой загрузки" "нельзя назначить типу" "[РАСПОЛОЖЕНИЯ КОМПАНИИ] Загрузка успешна"'.
Я также пытался использовать if - else вместо переключателя.
Файл действия, который содержит действие, которое я пытаюсь запустить, выглядит следующим образом:
import { Action } from '@ngrx/store';
export const COMPANY_DETAIL_LOAD = '[COMPANY DETAIL] Load';
export const COMPANY_DETAIL_LOAD_SUCCESS = '[COMPANY DETAIL] Load Success';
export const COMPANY_DETAIL_LOAD_FAILURE = '[COMPANY DETAIL] Load Failure';
export class CompanyDetailLoad implements Action {
readonly type = COMPANY_DETAIL_LOAD;
}
export class CompanyDetailLoadSuccess implements Action {
readonly type = COMPANY_DETAIL_LOAD_SUCCESS;
constructor(public payload: any) {}
}
export class CompanyDetailLoadFailure implements Action {
readonly type = COMPANY_DETAIL_LOAD_FAILURE;
}
export type CompanyDetailActions =
| CompanyDetailLoad
| CompanyDetailLoadSuccess
| CompanyDetailLoadFailure;
CompanyLocationsLoadFailure точно так же, как CompanyDetailLoadFailure.
Любая помощь очень ценится.
Заранее спасибо.