gpt4 book ai didi

angularjs - Angular2 @angular/router 3.0.0-alpha.3 - 路由更改时如何获取路由名称或路径

转载 作者:太空狗 更新时间:2023-10-29 17:33:15 25 4
gpt4 key购买 nike

我试图在路由更改时在我的 app.component 中获取当前路由名称或路由路径,以便我可以将路由名称用作包装器 div 周围的页面类。我正在尝试找出处理此问题的最佳方法。以前我订阅了路由器更改属性,就像我在下面列出的那样,但它似乎不再适用于@angular/router 3.0.0-alpha.3。如果有人有任何想法或建议,我将不胜感激。

this.router.changes.subscribe((val) => {
var path = this._location.path();
if (path.indexOf('page-name') !== -1) {
this.pageClass = 'page-name';
}
})

最佳答案

Steve 的回答是当前记录的那个,但是 ActivatedRoute 上可观察到的 url 没有为我触发,除非我第一次点击基本 url(例如:从/index 到/index/item 有效,但从/index/item 到 index/item/2、index/dashboard,甚至/index 都没有)。

我不确定以下解决方案是否是最佳实践,也不确定性能影响是什么,但我能够通过以下方式在路由器的 NavigationEnd 事件中获取事件路由:

import { Component, OnInit, OnDestroy } from '@angular/core';
import { ROUTER_DIRECTIVES, Router, NavigationEnd } from '@angular/router';

@Component({
selector: 'navbar',
directives: [ROUTER_DIRECTIVES],
template: `
...
`
})

export class NavBarComponent implements OnInit, OnDestroy {
private sub: any;

constructor(private router: Router) {
}

ngOnInit() {
this.sub = this.router.events.subscribe(e => {
if (e instanceof NavigationEnd) {
console.log(e.url);
}
});
}


ngOnDestroy() {
this.sub.unsubscribe();
}
}

无论您在 url 树中有多深或导航到/从哪里导航,每次更改路线时都会触发。

关于angularjs - Angular2 @angular/router 3.0.0-alpha.3 - 路由更改时如何获取路由名称或路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37898358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com