2016-10-16 3 views
7

Я использую ngrx/effects.ngrx: Поставляемые параметры не соответствуют какой-либо сигнатуре целевого вызова

После обновления rxjs из 5.0.0-beta.12 к 5.0.0-RC.1, мой IDE WebStorm дает мне ошибку ниже (красное подчеркивание). И когда я запускаю свое приложение, та же ошибка также отображается в терминале.

Поставляемые параметры не соответствуют какой-либо сигнатуре цели вызова.

enter image description here

@Effect() updateProfile$ = this.actions$ 
    .ofType(ProfileActions.PROFILE_UPDATE_PROFILE) 
    .map<string>(toPayload) 
    .switchMap(name => this.profileService.updateProfile(name) 
     .map(name => ({ type: ProfileActions.PROFILE_UPDATE_PROFILE_SUCCESS, payload: name })) 
     .catch(error => Observable.of({ type: ProfileActions.PROFILE_UPDATE_PROFILE_FAIL, payload: error })) 
    ); 

.

updateProfile(name: string): Observable<string> { 
    return Observable.of(name); 
    } 
  • Эта ошибка происходит, когда я использую map<string>(toPayload). Я попытался изменить на .map<any>(action => action.payload), но все равно такую ​​же ошибку.

  • Эффект без map<string>(toPayload) не даст ошибку .

Хотя это и дает мне ошибку, приложение все еще работает хорошо.

Как решить эту проблему?

ответ

11

В rxjs 5.0.0-rc.1 параметры общего типа для всех операторов были изменены, чтобы принять тип источника, который можно наблюдать первым.

Вам нужно будет изменить вызов map оператора соответственно:

actions$ 
    .ofType(ProfileActions.PROFILE_UPDATE_PROFILE) 
    .map<Action, string>(toPayload) 
+1

Просто добавьте слова Майка из GITTER, 'Action' от' импорта {действий} от '@ ngrx/магазина'; '. Или '.map (toPayload)' работает тоже. –