我对前端东西还比较陌生,我在玩Angular 6,所以以下组件面临的问题是NavigationEnd返回 undefined 和我不知道为什么:
import { Component, OnInit } from '@angular/core';
import { Router, NavigationEnd } from '@angular/router';
@Component({
selector: 'app-sidebar',
templateUrl: './sidebar.component.html',
styleUrls: ['./sidebar.component.scss']
})
export class SidebarComponent implements OnInit {
currentUrl: string;
constructor(private router: Router) {
router.events.subscribe(
(navEnd: NavigationEnd) => this.currentUrl = navEnd.url
);
}
}
答案 0 :(得分:3)
router.events
具有不同的事件,如果需要获取NavigationEnd,则需要进行如下过滤。试试这个,
this
答案 1 :(得分:2)
您需要检查从subscription方法接收的事件类型。
此外,您还需要使用 constructor(private router: Router) {
this.router.events
.subscribe((event) => {
if (event instanceof NavigationEnd) {
this.currentUrl = event.url
console.log('NavigationEnd:', event);
}
})
来访问路由器(这是一个私有变量)
{{1}}
答案 2 :(得分:1)
我认为您要达到的目标如下。
this.router.events.pipe(
filter((event) => event instanceof NavigationEnd),
map(() => this.activatedRoute)
).subscribe((event) => {
this.currentUrl = event.url
});
在构造函数中注入ActivatedRoute。
答案 3 :(得分:0)
快速修复,
更改代码
fig, axs = plt.subplots(1, 2, sharey=False)
plt.subplot(121)
sns.set_color_codes("muted")
ax1 = sns.barplot(x="count", y="product", data = PKSproductMeta, label = 'Counts',color = 'b')
ax1.set_title('Meta')
ax1.set_ylabel('')
ax1.set_xlabel('Counts')
plt.subplot(122)
sns.set_color_codes("muted")
ax2 = sns.barplot(x="count", y="product", data=PKSproductNAC, label = 'Counts',color = 'c')
plt.yticks([])
# labels_NAC = PKSproductNAC['product'].tolist()
ax2.set_title('NAC')
ax2.set_ylabel('')
ax2.set_xlabel('Counts')
plt.subplots_adjust(wspace=0.1, hspace=0)
plt.savefig('products.png',dpi=300)
到
(navEnd: NavigationEnd) => this.currentUrl = navEnd.url
答案 4 :(得分:0)
只需更改一行就可以在Angular 7上运行
router.events.subscribe(() => this.currentUrl = this.router.url)