2017-01-26 13 views
0
내가 여기에 슈퍼 분명 뭔가 빠진해야

...각도 2 RXJS 관찰

public suggestedData$: Observable<string[]>; 
public suggestionStream = new Subject<string>(); 

nextSuggestion(){ 
    this.suggestionStream.next(this.query); 
} 

this.suggestionStream 
    .map(query => { 
     return this._someService.getSomeThings(query); 
    }); 

this.suggestionData$ = this.suggestionStream.subscribe(); 

그리고 템플릿에이 같은 관측을 사용하고 싶습니다 :

<ul> 
    <li *ngFor="let suggestion of suggestionData$ | async">{{suggestion.something}}</li> 
</ul> 

비주얼 스튜디오 말하는 : this.suggestionData$ = this.sug...에 대한 Type 'Subscription' is not assignable to type 'Observable<string[]>'.

어떤 아이디어?

편집 : 콘솔에서

this.suggestionStream 
    .map(query => { 
     console.log(query); 
      return this._someService.getSomeThings(query); 
     }) 
     .subscribe(res => { 
      console.log('res', res); 
     }); 

인쇄 :

res Observable {_isScalar: false, source: Observable, operator: MapOperator}

_someService은 다음과 같습니다

getSomeThings(query: string){ 

    let params = new URLSearchParams(); 
    params.set('query', query); 

    return this.http.get('https://api.../suggest', {search: params}) 
     .map(res => res.json() || []); 

} 

답변

0

this.suggestionStream.subscribe()는 관찰 가능한하지 입력 구독이다. 그래서 나는 당신이 다음과 같을 것이다 달성하기 위해 노력하고 무엇을 생각 :

public suggestedData$: new Observable<string[]>; 
public suggestionStream = new Subject<string>(); 

nextSuggestion(){ 
    this.suggestionStream.next(this.query); 
} 

this.suggestionData$ = this.suggestionStream 
    .map(query => { 
    return this._someService.getSomeValues(query); 
    }); 

비동기 파이프 구독을 할 것입니다.

+0

Visual Studio에서이 오류가 발생했습니다. '유형'Observable > '을'Observable '유형에 할당 할 수 없습니다. 'Observable '유형을 'string []'유형에 지정할 수 없습니다. 'Observable '유형에 'length'속성이 없습니다. 콘솔에 오류가 없으므로 작동하지 않는 것 같습니다. – nick

+0

map 대신 flatMap 연산자를 사용하십시오. 나는 또한 suggestData Observable이어야한다고 생각한다 theFreedomBanana