Angular 从中的自定义指令中获取当前路由
我正在尝试实现一个自定义指令。我想知道ngOnInit()的当前路线。。我发现了一些如下的代码Angular 从中的自定义指令中获取当前路由,angular,routes,directive,Angular,Routes,Directive,我正在尝试实现一个自定义指令。我想知道ngOnInit()的当前路线。。我发现了一些如下的代码 @Directive({ selector: '[appLeftMenuActive]' }) export class LeftMenuDirective implements OnInit { @Input('appLeftMenuActive') pathKey; @HostBinding('class') elementClass; constructor(priv
@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(...)
您可以找到有关路由器事件的更多信息: