路由器getCurrentNavigation始终返回null

时间:2019-02-26 17:32:24

标签: angular

在最新版本的Angular 7.2.6中,我试图在路由器本身中传递数据

library(ggplot2)
library(DataExplorer)

df <- data.frame(matrix(data=runif(1000, 0, 100), ncol=50))
df[df>80] <- NA

plot_missing(df, theme_config =list(axis.text=element_text(size=6)))

this.router.navigate(['other'], {state: {someData: 'qwert'}} 文件中,OtherComponent始终返回null

https://adoptopenjdk.net/

Stackblitz Link

Angular Docs - getCurrentNavigation

5 个答案:

答案 0 :(得分:6)

您正在调用方法getCurrentNavigation为时已晚。导航已完成。

您需要在构造函数内部调用getCurrentNavigation方法:

constructor(private router: Router) {
    this.name = this.router.getCurrentNavigation().extras.state.example;
}

或者,如果您想访问ngOnInit中的导航,则可以执行以下操作:

ngOnInit() {
    this.name = history.state.example;
}

答案 1 :(得分:1)

像这样更改代码,因为在constructor()之后仅调用ngOnInit(),因此该值将为空

constructor(private router: Router) {
   this.name = this.router.getCurrentNavigation().extras.state.example;
}

答案 2 :(得分:0)

这发生在我身上,因为在使用当前状态的 getCurrentNavigation().extras().state 之前,NavigationEnd 的事件中有一个承诺(异步过程)。

我在之后移动了承诺,瞧!它设法在没有首先清理的情况下获取数据。

答案 3 :(得分:0)

对于规范(测试),getCurrentNavigation() 上的 constructor 不起作用,您必须使用 history 处的 ngOnInit() 和 {{1} 处的模拟值},例如:

history

现在您的组件可以在 beforeEach(() => { window.history.pushState({name: 'MyName', id: 1}, '', ''); } () 上使用此值并在规范上使用:

ngOnInit

答案 4 :(得分:-3)

为我服务Ionic 4

  • this.router.url => / app / menu / etc //当前位置