【问题标题】:Angular2 getting data from child route in app-rootAngular2从app-root中的子路由获取数据
【发布时间】:2017-07-20 16:37:37
【问题描述】:

在我的 app-root 组件中,我在容器中有 router-outlet 并带有一些样式。 我有路线:

{
    path: 'some-path',
    component: ChildContainer,
    data: { variable:'variable' },
}

我可以在 ChildContainer 中获取变量,但我需要在 AppRoot 中使用它。所以,从documentation 我可以从child 得到它,但是如果我在 AppRoot 构造函数中这样做:

const state: RouterState = router.routerState;
const root: ActivatedRoute = state.root;
const child = root.firstChild;

console.log(root, child) - child 为 null,并且 root 包含正确的 child(调用属性 getter)。 那么,如何在 AppRoot 中获取variable

【问题讨论】:

    标签: javascript angular angular2-routing


    【解决方案1】:

    您可以点击激活事件来获取路由器插座内实例化组件的引用。

    检查这个SO question

    @Component({
      selector: 'my-app',
      template: `<h3 class="title">Basic Angular 2</h3>
      <router-outlet (activate)="onActivate($event)" ></router-outlet>
      `
    })
    export class AppComponent {
      constructor(){}
    
      onActivate(componentRef){
        componentRef.sayhello();
      }
    }
    
    @Component({
      selector: 'my-app',
      template: `<h3 class="title">Dashboard</h3>
      `
    })
    export class DashboardComponent {
      constructor(){}
    
      sayhello(){
        console.log('hello!!');
      }
    }
    

    这里是Plunker!!

    更新

    ActivatedRoute 公开为公共属性,一旦获得路由组件引用,就可以订阅数据,

    onActivate(componentRef){
        componentRef.route.data.subsribe(data => {
           console.log(data);
        });
    }
    

    【讨论】:

    猜你喜欢
    • 2017-06-03
    • 1970-01-01
    • 2016-11-13
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多