2017-08-13 5 views
1

私の問題はかなりシンプルな解決策だと思いますが、私は見つけませんでした。 は、私が「detailArticle」 に購読秒の値を書きたいAngular 4で別の購読を購読するには?

export class ArticleDetailComponent implements OnInit { 

    private articleID: any; 
    public detailArticle: any ; 


    constructor(private route: ActivatedRoute , private _articlesService: ArticlesService) { 
    } 

    ngOnInit() { 
    this.route.params.subscribe((params) => { 
     this.articleID = params['id']; 
     this._articlesService.getArticle(this.articleID).subscribe(article => this.detailArticle = article); 
    } 
    ); 
    } 
} 

購読秒の値を書きたいしかし、私はすでに購読呼び出すので、私は、リクエストに差があると思います彼らが到着する時間。 そして値に "未定義"が記録されます 2つのサブスクリプションのうちの1つが別のサブスクリプションにある場合、そのサブスクリプションをどのように同期させることができますか? 考えられるのは、結果の値をdetailArticleに設定することです。テンプレートで使用できるようにします。

答えて

1
あなたが探していることrxjsの switchMapオペレータである

(そのドキュメントhereを参照してください):プレーンすなわち

this.route.params 
      .do(params => this.articleID = params['id']) 
      .switchMap(
      params => this._articlesService.getArticle(this.articleID) 
     ) 
      .subscribe(article => this.detailArticle = article); 

それは、観察あなたのparamsを取り、あなたの記事を取得し、新たな観測可能を開始し、結果があります元の観測可能な状態にマージされ、したがって、あなたのサブスクリプションで利用可能です。

+0

ありがとうございました!それは作品です。 – SteliX