带有3.0路由器的Angular 2 rc4:如何有效地获取所有路由信息

时间:2016-07-06 09:02:41

标签: angular router

我在角度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

                });
            });
        });
    }
}

感谢

1 个答案:

答案 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