导航到路由参数时未调用 ngOnInit

Posted

技术标签:

【中文标题】导航到路由参数时未调用 ngOnInit【英文标题】:ngOnInit not called when navigating to route parameter 【发布时间】:2018-12-13 20:10:37 【问题描述】:

我用过的每个版本的 Angular 都遇到这个问题已经有一段时间了,但我已经绕过它(目前在 6.0.3 上)。我有这样的路线设置:

/book/:param

我正在阅读 ngOnInit 中的参数,我可以在模板等中显示它。之后,我有一个快速的方法来设置我真正想要显示的参数的漂亮版本,但是这之后永远不会更新第一次导航到任一路线。我为每条路线做不同的事情也是如此。

我应该只制作单独的组件而不是使用参数还是我遗漏了一些明显的东西?

【问题讨论】:

【参考方案1】:

不需要像这样写路由配置-

/book/:all
/book/:notconfirmed

只需用这样的一行替换它 -

/book/:flag

现在你要做的是,订阅来自路由的params,然后做你想做的事。

this.activatedRoute.params.subscribe(params => 
   console.log('every time route params chnages you will get here');

【讨论】:

我的错,这只是一个参数,但这是我正在使用的两个不同的子页面。编辑原始问题。

以上是关于导航到路由参数时未调用 ngOnInit的主要内容,如果未能解决你的问题,请参考以下文章

将参数传递给路由时未定义路由

推送 viewController 时未调用 viewDidLoad

使用调用控制器的路由时未识别的控制器

直接导航到组件时未呈现道具 - React Redux

返回屏幕时未在 React Native 中调用 useEffect

为啥当我单击基于导航的应用程序上的后退按钮时未调用 viewdidunload 函数