2017-07-17 94 views
0

我有以下结构:角4 - 路由解析嵌套的组件?

Parent Component 
|__Nested Component 1 
|__Nested Component 2 
    |__Nested Component 3 

我想一些数据解析成Nested Component 3 - 这里唯一的组件都有一个路由这里是父组件。有没有办法让在嵌套的组件3决心数据,而无需:

A.使用@input - 这是肮脏的走下去三个部分组成的链条。
B.使用一些服务 - 我知道我可以将数据保存到一些服务和嵌套组件3检索它 - 也许这是要走的路,但我正在寻找其他的选择。尽管这可能是唯一真正的方法。

那么,什么是这里的最佳方法。 Iirc在Angular 1中,所有的子组件都可以获得解决的数据,但在这里似乎并不是这样。

+0

我觉得B选项将是更好的办法。您可以像使用服务一样使用浏览器存储。 –

回答

1

你可以得到父路径的路径参数是这样的:

ngOnInit() { 
    const pathFromRoot = this.route.pathFromRoot; 
    let paramsSub = Observable.merge(...pathFromRoot.map(p => p.params)); 
    paramsSub.subscribe(params => { 
    //emits the params map for each parent route. 
    console.log(params); 
    }); 
} 

要知道,你会得到一个地图路线则params的树中的每条路线。所以在你的情况下,订阅回调将被触发两次。

你真的无法将它们合并各成一体混搭对象,因为路线PARAMS订阅从来没有“完成”。

+0

谢谢,我会尽力的。 – VSO