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