Angular 从中的自定义指令中获取当前路由

Angular 从中的自定义指令中获取当前路由,angular,routes,directive,Angular,Routes,Directive,我正在尝试实现一个自定义指令。我想知道ngOnInit()的当前路线。。我发现了一些如下的代码 @Directive({ selector: '[appLeftMenuActive]' }) export class LeftMenuDirective implements OnInit { @Input('appLeftMenuActive') pathKey; @HostBinding('class') elementClass; constructor(priv

我正在尝试实现一个自定义指令。我想知道ngOnInit()的当前路线。。我发现了一些如下的代码

@Directive({
  selector: '[appLeftMenuActive]'
})
export class LeftMenuDirective implements OnInit {

  @Input('appLeftMenuActive') pathKey;

  @HostBinding('class')
  elementClass; 

  constructor(private elRef:ElementRef,private route: Router) { 

  }

  ngOnInit(): void {

    this.route.events.subscribe((data:any) => {
      console.log(data.url)
    });
  }

}
这段代码运行console.log三次,我不知道为什么。有什么想法吗?还是从该指令中获取当前活动路由的更好方法

<a class="nav-link" [appLeftMenuActive]="'game'"  routerLinkActive="active" [routerLink]="['/game/list']">

控制台日志被多次调用,因为路由器发出多个事件:

  • 警卫检查结束
  • GuardsCheckStart
  • 导航取消
  • 导航终端
  • 导航错误
  • 导航启动
  • 解决方案
  • 解决开始
  • 认识到的路线
如果在设置路由时使用选项,则可以跟踪路由器的工作方式:

导入{
额外选择,
路由模块,
路线
}来自“@angular/router”;
导出常量选项:外部选项={
enableTracing:正确,
};
@NGD模块({
进口:[
RouterModule.forRoot([],选项),
],
导出:[路由模块],
})
导出类AppRoutingModule{}
您可以按事件类型筛选可观察事件的输出,例如:

this.router.events
 .filter(event => event instanceof NavigationEnd)
 .subscribe(...)
您可以找到有关路由器事件的更多信息:


控制台日志被多次调用,因为路由器发出多个事件:

  • 警卫检查结束
  • GuardsCheckStart
  • 导航取消
  • 导航终端
  • 导航错误
  • 导航启动
  • 解决方案
  • 解决开始
  • 认识到的路线
如果在设置路由时使用选项,则可以跟踪路由器的工作方式:

导入{
额外选择,
路由模块,
路线
}来自“@angular/router”;
导出常量选项:外部选项={
enableTracing:正确,
};
@NGD模块({
进口:[
RouterModule.forRoot([],选项),
],
导出:[路由模块],
})
导出类AppRoutingModule{}
您可以按事件类型筛选可观察事件的输出,例如:

this.router.events
 .filter(event => event instanceof NavigationEnd)
 .subscribe(...)
您可以找到有关路由器事件的更多信息:


this.route.url?this.route.url?