Эффекты ngrx дают Тип 'void' не может быть назначен типу 'ObservableInput'

@Injectable()
export class ApiSearchEffects {

  @Effect()
  search$: Observable<any>
    = this.actions$
    .ofType(query.ActionTypes.QUERYSERVER)
    .debounceTime(300)
    .map((action: query.QueryServerAction) => action.payload)
    .switchMap(payload => {
      console.log(payload);
      const nextSearch$ = this.actions$.ofType(query.ActionTypes.QUERYSERVER).skip(1);

      this.searchService.getsearchresults(payload)
        .takeUntil(nextSearch$)
        .map((response) =>
          ({type: '[Search] Change', payload: response}
          ))
    });

приведенный выше код дает мне аргумент типа '(payload: any) => void' не может быть назначен параметру типа '(value: any, index: number) => ObservableInput'. Тип void нельзя присвоить типу ObservableInput. где могла быть ошибка. Я следил за официальным вступлением к эффектам ngrx на https://github.com/ngrx/effects/blob/master/docs/intro.md.


person vanquishers    schedule 15.06.2017    source источник
comment
ваш switchMap должен возвращать значение ... его возвращающая пустота, как и у вас   -  person pixelbits    schedule 15.06.2017


Ответы (1)


Проблема в том, что ваш switchMap должен возвращать значение; его возвращающаяся пустота, как и у вас.

Попробуй это

  return this.searchService.getsearchresults(payload)
        .takeUntil(nextSearch$)
person Vamshi    schedule 15.06.2017
comment
ответ - в основном исходный код с добавленным возвратом. На мой взгляд, вы могли бы прокомментировать настройку вместо того, чтобы давать ответ - person Jota.Toledo; 15.06.2017
comment
Полностью согласен, на самом деле решение уже упоминалось в комментариях. Но в большинстве случаев мы думаем, что на него еще нет ответа, и читаем весь вопрос. Stackoverflow должен давать возможность отмечать ответ в комментариях. Если это противоречит лучшим практикам, я могу удалить его :) - person Vamshi; 15.06.2017