路由器订阅子路由器

时间:2016-05-15 07:16:49

标签: typescript angular

如何在子路由器中的每个URL更改上触发一些事件? 我可以实现在根路由器中的URL更改上触发事件,如下面的代码,但我不能在子路由器中。

我使用路由器弃用和Angular2 beta,而不是RC。

// myapp.component.ts
@RouteConfig([
  {
    useAsDefault: true,
    name: 'Main',
    path: '/...',
    component: MainComponent,
  },
])
export class MyAppComponent {
  constructor(private _router: Router) {
    _router.subscribe((url: string): void => {
      // Fire on every URL change
      // e.g. URL "/" to "/sub1", "/sub1" to "/sub2"
    });
  }
}

// main.component.ts
// URL: /
@RouteConfig([
  {
    useAsDefault: true,
    name: 'Sub1',
    path: '/sub1',
    component: Sub1Component,
  },
  {
    name: 'Sub2',
    path: '/sub2',
    component: Sub2Component,
  },
])
export class MainComponent {
  constructor(private _router: Router) {
    _router.subscribe((url: string): void => {
      // Does not fire...
    });
  }
}

// sub1.component.ts
// URL: /sub1
export class Sub1Component {}

// sub2.component.ts
// URL: /sub2
export class Sub2Component {}

(当然,我在上面省略了import语法和装饰器。)

1 个答案:

答案 0 :(得分:0)

我可以期待使用_router.parent.subscribe! 谢谢@yuzuri。