2017-06-15 74 views
2
@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} 
     )) 
    }); 

上面的代碼給我類型的參數「(有效載荷:任何)=>空隙」不是分配給類型(值」參數:任何,index:number)=> ObservableInput'。 類型'void'不可分配給'ObservableInput'類型。 哪裏可能是錯誤的。我已經在https://github.com/ngrx/effects/blob/master/docs/intro.md上關注了ngrx特效官方介紹。NGRX效果給出類型「無效」是不能分配給輸入「ObservableInput」

+5

您switchMap應該返回一個值...它返回void因爲你擁有它 – pixelbits

回答

2

試試這個

@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); 

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

答案是主要的原代碼,有回加。你可以評論調整,而不是在我看來作出回答 –

+0

非常同意,實際上有一個解決方案已經在評論中提到。但是大多數時候我們認爲它還沒有得到回答,並且閱讀了整個問題。 Stackoverflow應該提供選項來標記從評論中回答。如果這是違背最佳做法,我可以刪除它:) – Skeptor

相關問題