2017-09-20 17 views
1

2つのコンポーネントと通信しよう httpコールを行い、次にmergeMapまたはswitchMapを対象にできると思いましたか?角2の対象は関数ではありません

import {Subject} from 'rxjs/Subject'; 

constructor(private _http: HttpClient) { 
    this.populateList = new Subject<Blog[]>(); 
} 

getBlogs(){ 
    return this._http.get(this.blogsURL+'blogs') 
     .map((result: Response) => { 
     this.blogs = result['blogs']; 
    return this.blogs; 
    }).switchMap((blogs)=>this.populateList.next(blogs)) 
} 

よう

何かしかし、私は得る:

あなたはストリームが期待されていたところ '未定義' を提供します。あなたが 観察可能な、約束、アレイ

を提供することができ、私はちょうど対象に加入しようとしているエラーを取得しています:

this.blogsService.populateList() 
     .subscribe((res)=>{ 
     console.log(res) 
    }) 

this.blogsService.populateListは

関数ではありません

httpコール後にビューを更新する方法です。

答えて

1

あなたはこのように()のように購読する必要があります。それは機能ではない。あなたはあなただけ行う必要があるスイッチマップを必要といけない。この原因のような驚き

this.blogsService.populateList.subscribe() 

と書き換え最初の関数は、リストを移入する副作用です。

getBlogs(){ 
    return this._http.get(this.blogsURL+'blogs') 
     .map((result: Response) => { 
     this.blogs = result['blogs']; 
    return this.blogs; 
    }).do((blogs)=>this.populateList.next(blogs)) 
} 
+0

は、今私はまた私が示されてきた方法で、前に被験者に購読している、「関数ではありません.doという」を取得し、インポートした – Roy

+0

問題はなかった 『rxjs /追加/オペレータ/行います』 – alexKhymenko

+0

ああ、機能についてはうまくいっても、populateListエラーが表示される – Roy

関連する問題