Действия должны иметь ошибку свойства типа NgRx
У меня есть класс эффектов simle, который должен получить некоторые данные из Firebase и отправить новое действие.
@Injectable()
export class TripsEffects {
constructor(private actions$: Actions, private afAuth: AngularFireAuth ) {}
@Effect()
loadTrips$ = this.actions$.ofType(TripsActionsTypes.LOAD_TRIPS)
.pipe(
switchMap(() => {
return this.afAuth.authState.pipe(
map(user => new LoadTripsSuccess(user))
);
})
);
}
Но я получаю ошибку Actions must have a type property
, Когда пользователь входит в систему, он перенаправляется на страницу "Поездки", а в компоненте "Поездки" я отправляю действие для загрузки поездок. Вот мои действия:
export enum TripsActionsTypes {
LOAD_TRIPS = '[Trips] Load Trips',
LoadTripsSuccess = '[Trips] Load Trips Success',
LoadTripsFailure = '[Trips] Load Trips Failure'
}
export class LoadTrips implements Action {
type: TripsActionsTypes.LOAD_TRIPS;
}
export class LoadTripsSuccess implements Action {
type: TripsActionsTypes.LoadTripsSuccess;
constructor(public payload: any) {}
}
export class LoadTripsFailure implements Action {
type: TripsActionsTypes.LoadTripsFailure;
constructor(public payload: any) {}
}
1 ответ
Я думаю, что вам нужно изменить type: ...;
в type = ...;
в ваших определениях действий.
type: TripsActionsTypes.LOAD_TRIPS;
средства type
свойство типа TripsActionsTypes.LOAD_TRIPS
type = TripsActionsTypes.LOAD_TRIPS;
Значит это type
инстанцируется до значения TripsActionsTypes.LOAD_TRIPS
,
Таким образом, свойство type в ваших действиях никогда не инициализируется. Это простая ошибка, потому что синтаксис литерала объекта использует :
для инициализации (например: { type: 'something' }
) и машинописный текст не дает вам ошибки транспиляции.