给定以下内容:
this.activatedRoute.parent.params
.subscribe(params => {
let fooId = +params['fooId'];
this.activatedRoute.params
.subscribe(params => {
let barId = +params['barId'];
this.fooBarService.getFooBars(fooId, barId)
.subscribe(fooBars => {
this.fooBars = fooBars;
});
});
});
可以通过以下方式简化部分嵌套:
this.activatedRoute.parent.params
.subscribe(params => {
let foo = +params['fooId'];
this.activatedRoute.params
.switchMap(params => this.fooBarService.getFooBars(fooId, +params['barId']))
.subscribe(fooBars => {
this.fooBars = fooBars;
});
});
但是是否可以展平剩余的嵌套订阅?
使用 combineLatest 运算符:
Observable
.combineLatest(this.activatedRoute.parent.params, this.activatedRoute.params)
.switchMap(data => this.fooBarService.getFooBars(+(data[0])['fooId'], +(data[1])['barId']))
.subscribe(fooBars => {
this.fooBars = fooBars;
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句