在Angular 9中,当使用onSameUrlNavigation
属性设置为reload
时,路由事件不会被触发。这是因为reload
选项会导致同一URL的导航被视为刷新页面,而不是路由到同一个组件。
如果你需要在使用onSameUrlNavigation='reload'
时触发路由事件,可以使用以下解决方法:
import { Injectable } from '@angular/core';
import { Router, NavigationEnd } from '@angular/router';
@Injectable()
export class RouteListenerService {
constructor(private router: Router) {
this.router.events.subscribe(event => {
if (event instanceof NavigationEnd) {
// 触发路由事件的逻辑
}
});
}
}
import { Component } from '@angular/core';
import { RouteListenerService } from './route-listener.service';
@Component({
// 组件元数据
})
export class MyComponent {
constructor(private routeListenerService: RouteListenerService) {
// 在构造函数中订阅路由事件
this.routeListenerService.subscribe(event => {
// 处理路由事件的逻辑
});
}
}
通过这种方式,即使在使用onSameUrlNavigation='reload'
时,你仍然可以监听到路由事件并执行相应的逻辑。