2017-08-13 138 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