我在角度2 rc4上使用路由器3.0.0-beta.1。 我想知道如何在当前路线上获取多个数据部分。 我需要参数,数据和URL。
所有这三个部分都通过观察者暴露在路线上。 我想出了这个混乱的代码,我想知道这是否可以更有效地完成:
@Component({
...
})
@Injectable()
export class MyComponent implements OnInit {
constructor(private route:ActivatedRoute) {
}
ngOnInit() {
this.urlSub = this.route.url.subscribe(url=> {
this.dataSub = this.route.data.subscribe(data=> {
this.paramsSub = this.route.params.subscribe(params=> {
... logic using all 3 variables: params, data, url
});
});
});
}
}
感谢
答案 0 :(得分:2)
看来你正在寻找的是zipArray。这将等到每个可观察值都有一个值。
(从文档中提取) zipArray接受可变数量的Observables作为参数,并返回一个发出数组的Observable,每个数据包含来自每个源Observable的第n个项目。
示例代码
var range = Rx.Observable.range(0, 5);
var source = Rx.Observable.zipArray(
range,
range.skip(1),
range.skip(2)
);
var subscription = source.subscribe(
function (x) {
console.log('Next: ' + x);
},
function (err) {
console.log('Error: ' + err);
},
function () {
console.log('Completed');
});
Next: [0,1,2]
Next: [1,2,3]
Next: [2,3,4]
Completed