首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角度2 RXJS观测值

角度2 RXJS观测值
EN

Stack Overflow用户
提问于 2017-01-26 18:42:43
回答 1查看 429关注 0票数 0

我一定是漏掉了一些非常明显的东西...

代码语言:javascript
复制
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:

代码语言:javascript
复制
<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[]>'.

有什么想法吗?

编辑:

代码语言:javascript
复制
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看起来像这样:

代码语言:javascript
复制
getSomeThings(query: string){

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

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

}
EN

回答 1

Stack Overflow用户

发布于 2017-01-26 19:05:33

this.suggestionStream.subscribe()的类型为订阅,而不是可观察对象。因此,我认为您要实现的目标如下所示:

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41871686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档