我有一个路由策略,它在路由到另一个组件时不会破坏组件。当(重新)路由到组件时,我想调用组件的一个方法。
到目前为止,我已经尝试用各自的方法AfterContentChecked和AfteViewChecked实现接口ngAfterContentChecked和‘`ngAfterViewChecked。实现其中一个接口的唯一问题是,在路由到组件时会多次调用该方法,这对我来说是一个性能问题。
在研究web的过程中,我还没有遇到一个接口,我可以实现它来获得所期望的行为。
解决这个问题的唯一可能性是在路由器中验证选择了哪条路由/路径,如果选择了所需的路由/路径,我会调用组件的方法吗?
发布于 2018-11-10 19:46:32
发布于 2018-11-10 20:00:12
您基本上可以将注入Router作为依赖项添加,然后在其上订阅events。有一个路由器公开的事件列表。
因为我们只关心NavigationEnd事件,所以可以使用filter操作符过滤掉它。
事件数据具有url属性,可用于与NavigationEnd之后获得的路径进行比较。
this.router.events
.pipe(
  filter(event => event instanceof NavigationEnd)
)
.subscribe((event: any) => {
  console.log('Got the Event URL as '. event.url);
})这是一个供您参考的样本StackBlitz。
发布于 2018-11-10 17:17:11
每当路由发生时,都会创建组件并调用ngOnInit函数。
export class TestComponent implements OnInit{
  constructor(){
     //called first time before the ngOnInit()
  }
  ngOnInit(){
     //called after the constructor
  }
}我们还有两种选择-
Resover - resolve函数Gaurds - canActive函数每当路由更改时,Resolver和Gaurd都会被执行。
https://stackoverflow.com/questions/53241388
复制相似问题