2017-01-26 4 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> 

Visual Studio говорит: Type 'Subscription' is not assignable to type 'Observable<string[]>'. за this.suggestionData$ = this.sug...

Любые идеи?

EDIT:

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 ' не присваивается типу 'string []'. Отсутствует свойство 'length' типа 'Observable ' .' Ошибка в консоли, похоже, не работает. – nick

+0

попробуйте оператор flatMap вместо карты. Я также думаю, что предлагаемые данные должны быть наблюдаемыми theFreedomBanana

Смежные вопросы