在最新版本的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
答案 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