我想在一个组件内获取与当前有效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 :
问题:
为什么ActivatedRoute会向我提供注入它的组件的值,而不是当前的活动组件?
为了实现所需功能,我不得不执行以下代码,由于将组件耦合到URL,我显然要避免这样做:
if (this.router.url.endsWith('/home')) {
this.reloadComponentsData(null);
}