Действия должны иметь ошибку свойства типа 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' }) и машинописный текст не дает вам ошибки транспиляции.

Другие вопросы по тегам