“如果组件已经存在于 DOM 中,Angular 就不会创建组件。它会重用组件实例。这意味着当用户再次导航到组件时,不会调用 ngOnInit 生命周期挂钩。”
基于此,我无法理解为什么在我们检索路由参数时ngOnInit
如果它包含该方法,为什么会再次调用生命周期方法。.subscribe
谁能帮我解决这个问题?
谢谢你。
“如果组件已经存在于 DOM 中,Angular 就不会创建组件。它会重用组件实例。这意味着当用户再次导航到组件时,不会调用 ngOnInit 生命周期挂钩。”
基于此,我无法理解为什么在我们检索路由参数时ngOnInit
如果它包含该方法,为什么会再次调用生命周期方法。.subscribe
谁能帮我解决这个问题?
谢谢你。
我们可以通过多种方式访问路由参数,使用 -->
this.route.snapshot.params["someParam"]
或者
this.route.params.subscribe()
假设我们使用第二种方法.subscribe
,因为您对这种情况感兴趣。即使它在ngOnInit
生命周期方法中,如果路由参数已更改,它也会被触发。我们订阅了某些更改(路由参数更改),因此如果它们更改,我们将获得最新值。
一切都结束了,这不是关于ngOnInit
。这是关于我们的订阅。我们正在“倾听”这些变化。
仅供参考,如果您使用第一种方法 this.route.snapshot.params["someParam"]
,而我们没有.subscribe
这种方法,则不会再次触发。它只会运行一次,不会再次运行,因为我们对可能即将发生的路由参数更改“不感兴趣”。