繁体   English   中英

Angular 2 路由器评估多个路由参数

[英]Angular 2 router evaluating multiple route parameters

在我的应用程序中,我有多个参数的路由,例如

http://localhost:3000/department/6/employee/45/sales?from=20160921&to=20160928

我如何最好地评估这些参数? 我可以订阅ActivatedRoute paramsqueryParams

this.route.params.subscribe(params => ...load data for params);
this.route.queryParams.subscribe(queryParams=> ...load data for queryParams);

但是,这当然会触发加载两次。 另外,我总是需要这两条信息,例如上面的例子中的salesfrom / to

所以上面的代码变成

this.route.params.subscribe(params => {
    let queryParams = this.route.snapshot.queryParams;
    ...load data for params/queryParams
}

this.route.queryParams.subscribe(queryParams => {
    let params = this.route.snapshot.params;
    ...load data for params/queryParams
}

而且我还没有解决两次触发加载的问题。

更糟糕的是,我还需要弄清楚我的ActivatedRoute需要上升多少级,所以看到它并不罕见

this.route.parent.parent.parent.params.subscribe(...)

啊。 无论如何,这会因延迟加载的组件而崩溃。 无论如何,只是为了检索少量路由参数需要大量样板代码。

我这样做错了吗? 有没有推荐的方法来解决这个问题?

你可以试试下面,

paramSubscription = Observable.forkJoin(
  this.route.params,
  this.route.queryParams,
  this.route.parent.parent.parent.params
).subscribe(res => {
   this.combinedParams = { params :res[0], queryParams :res[1], ancestorParam : res[2] };
   // Load data
 });

// unsubscribe from the subscription
ngOnDestroy = () => {
    this.paramSubscription.unsubscribe();
}

请注意,我还没有测试过这段代码。

希望这可以帮助!!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM