2017-08-13 136 views
1

我想我的問題有一個非常簡單的解決方案,但我沒有找到一個。 我想寫第二的價值認購如何在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); 
    } 
    ); 
    } 
} 

我想寫第二的價值認購爲「detailArticle」 但因爲我已經叫一個訂閱,我認爲這是在請求一個差異和他們到達的時間。 並在其中記錄一個「未定義的」值 如何將兩個訂閱()中的一個同步到另一個訂閱? 這個想法是設置detailArticle的結果值所以我可以在模板中使用它。

回答

1

你要找的是switchMap操作rxjs(見它的文檔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