ActivatedRoute没有返回活动组件

时间:2019-10-03 15:07:03

标签: angular typescript angular-activatedroute

我想在一个组件内获取与当前有效URL相关联的组件。为了实现此目的,我通过以下方式使用 ActivatedRoute

@Component({
  selector: 'ampm-home',
  templateUrl: './home.component.html'
})
export class HomeComponent {
constructor(
    private readonly router: Router,
    private readonly activatedRoute: ActivatedRoute,
    private readonly myService: MyService) {
    this.myService.eventTriggered.subscribe(() => {
      if (this.activatedRoute.snapshot.routeConfig.component.name === HomeComponent.name) {
        this.reloadComponentsData(null);
      }
    });
  }
}

其中 MyService 是一项具有可观察性的服务,我想在其中了解当前的活动URL,并且仅当当前URL是与当前 HomeComponent关联的URL时,才重新加载数据(即,如果当前URL是“ http://myUrl/root/home”,它是与 HomeComponent 相关的URL)。

但是,例如当我进入“ http://myUrl/root/anotherComponent”并且触发 MyService.observable 时, activatedRoute.snapshot 中的值 HomeComponent 中的strong>不是与 anotherComponent 相关的那个,而是 HomeComponent

activated route

问题

为什么ActivatedRoute会向我提供注入它的组件的值,而不是当前的活动组件?

为了实现所需功能,我不得不执行以下代码,由于将组件耦合到URL,我显然要避免这样做:

if (this.router.url.endsWith('/home')) {
    this.reloadComponentsData(null);
}

0 个答案:

没有答案