Я должен что-то супер очевидное здесь отсутствует ...Угловые 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() || []);
}
Это то, что я думал ... Я получаю эту ошибку в Visual Studio: 'Тип 'Наблюдаемый <Наблюдаемый>' не может быть присвоен типу 'Наблюдаемый '. Тип 'Observable ' не присваивается типу 'string []'. Отсутствует свойство 'length' типа 'Observable ' .' Ошибка в консоли, похоже, не работает. –
nick
попробуйте оператор flatMap вместо карты. Я также думаю, что предлагаемые данные должны быть наблюдаемыми –
theFreedomBanana