我一定是漏掉了一些非常明显的东西...
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();然后在模板中,我想像这样使用observable:
<ul>
<li *ngFor="let suggestion of suggestionData$ | async">{{suggestion.something}}</li>
</ul>Visual studio说:用于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() || []);
}发布于 2017-01-26 19:05:33
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 );
});异步管道将执行订阅。
https://stackoverflow.com/questions/41871686
复制相似问题