我想创建一个Breadcrumb
.
为此,我考虑创建一个服务来处理它。但是我需要挂钩每个路由器更改,每次路由器状态更改时将使用的方法或类。
这个挑战必须在没有在我所有组件中添加 onActivate 方法的情况下解决,因为我有很多组件。
十分感谢 !
我想创建一个Breadcrumb
.
为此,我考虑创建一个服务来处理它。但是我需要挂钩每个路由器更改,每次路由器状态更改时将使用的方法或类。
这个挑战必须在没有在我所有组件中添加 onActivate 方法的情况下解决,因为我有很多组件。
十分感谢 !
您可以使用路由器事件来跟踪路由更改
import { Router, NavigationEnd } from '@angular/router';
import 'rxjs/add/operator/filter';
class MyService {
constructor(private router: Router) {
this.router.events
.filter(e => e instanceof NavigationEnd)
.subscribe(e => console.log('Route changed: ' + e.url);
}
}
Angular 7 将其events
变为Observable
,因此您需要使用不同的代码来过滤NavigationEnd
事件。
class MyService {
constructor(public router: Router, logger: Logger) {
router.events
.pipe(filter(e => e instanceof RouterEvent))
.subscribe(e => {
logger.log(e.id, e.url);
});
}
}
有关详细信息,请参阅https://angular.io/api/router/RouterEvent。