这是一个测试路由器触发事件的简单ts代码
import { Component, OnInit } from '@angular/core';
import { Router, RoutesRecognized } from '@angular/router';
@Component({
selector: 'user',
templateUrl: './user.component.html',
styleUrls: ['./user.component.css']
})
export class UserComponent implements OnInit {
constructor(private router: Router) {
this.router.events.subscribe((e)=>{console.log(e)})
}
ngOnInit() {}
}
答案 0 :(得分:1)
misutkame,我希望这还不算太晚,我遇到了同样的问题。我认为这是由于在组件的生命周期开始之前触发了路由器事件。因此,您要询问的内容无法直接解决。 不过,有几种解决方法。
在创建子组件期间使用已激活路由的快照。这样,您将获得组件生命周期中逻辑所需的路由器数据。您仍然需要为以后的事件设置一个侦听器。
让父组件监听路由器事件,更新一个behaviorSubject并将其作为输入传递给子代。
答案 1 :(得分:0)
尝试使用RoutesRecognized
:
import { RoutesRecognized} from '@angular/router';
ngOnInit() {
this.router.events
.filter((e: any) => e instanceof RoutesRecognized)
.pairwise()
.subscribe((e: any) => {
console.log(e);
});
}