-2

“如果组件已经存在于 DOM 中,Angular 就不会创建组件。它会重用组件实例。这意味着当用户再次导航到组件时,不会调用 ngOnInit 生命周期挂钩。”

基于此,我无法理解为什么在我们检索路由参数时ngOnInit如果它包含该方法,为什么会再次调用生命周期方法。.subscribe

谁能帮我解决这个问题?

谢谢你。

4

1 回答 1

0

我们可以通过多种方式访问​​路由参数,使用 -->

this.route.snapshot.params["someParam"]

或者

this.route.params.subscribe()

假设我们使用第二种方法.subscribe,因为您对这种情况感兴趣。即使它在ngOnInit生命周期方法中,如果路由参数已更改,它也会被触发。我们订阅了某些更改(路由参数更改),因此如果它们更改,我们将获得最新值。

一切都结束了,这不是关于ngOnInit。这是关于我们的订阅。我们正在“倾听”这些变化。

仅供参考,如果您使用第一种方法 this.route.snapshot.params["someParam"],而我们没有.subscribe这种方法,则不会再次触发。它只会运行一次,不会再次运行,因为我们对可能即将发生的路由参数更改“不感兴趣”。

于 2022-01-16T12:07:34.787 回答