NavigationEnd的url属性返回未定义(角度6)

时间:2018-07-28 18:06:39

标签: javascript angular typescript rxjs router

我对前端东西还比较陌生,我在玩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
    );
  }
}

5 个答案:

答案 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)