要解决Angular的routerLink不会触发ngOnInit函数的问题,可以使用ActivatedRoute的参数订阅来监视路由变化并触发适当的方法。
下面是一个示例代码,使用ActivatedRoute来监听路由变化并在每次路由变化时触发ngOnInit函数。
在你的组件类中,导入ActivatedRoute和OnInit:
import { ActivatedRoute, OnInit } from '@angular/router';
然后,在组件类中实现OnInit接口,并注入ActivatedRoute:
export class YourComponent implements OnInit {
constructor(private route: ActivatedRoute) {}
ngOnInit(): void {
this.route.params.subscribe(() => {
// 在每次路由变化时触发的代码
// 可以在这里执行ngOnInit函数中的逻辑
});
}
}
这样,无论是初次加载组件还是通过路由链接导航到组件,ngOnInit函数都会在路由变化时被触发。
请注意,这种解决方法只适用于路由参数的变化。如果要在其他情况下触发ngOnInit函数,可以考虑在组件内部使用其他方法,如ngDoCheck或ngAfterViewInit。