当有route.paramMap.subscribe时,有什么理由使用route.snapshot.paramMap吗?

Mar*_*ijn 2 parameters query-string angular

我想知道是否有任何理由使用

this.someProperty = this.route.snapshot.paramMap.get('someParam');
Run Code Online (Sandbox Code Playgroud)

代替

this.route.paramMap.subscribe((param) => 
{ 
  this.someProperty = param.get('someParam'); 
});
Run Code Online (Sandbox Code Playgroud)

queryParamMap 也是如此。

在我关注的教程中(由 Deborah Kurata 在 Pluralsight 上发布),他们似乎默认使用快照,并且仅当您期望参数更改而路线保持不变时才订阅。但应用程序往往会随着时间而改变。更改可能会导致参数发生变化而路线保持不变的情况。人们很容易忽视这种情况。

那么使用订阅而不是快照应该是(或者是)最佳实践吗?

快照方式写起来比较短,但是还有其他好处吗?

我可能在这里征求意见,但我想知道是否有官方的最佳实践。

提前致谢。

tin*_*one 6

当您确定 HeroDetailComponent 实例永远不会被重复使用时,您可以使用快照。

(来源:快照:不可观察的替代角度文档

在快照 paramMap 或可观察 paramMap 之间进行选择取决于应用程序的预期导航场景。仅在某些情况下,可以使用 observable paramMap 方式实现组件重用。除此之外,observable paramMap(异步订阅)似乎没有带来任何好处。

因此,只需读取快照属性并处理变量,无需在此处处理可观察值。仅当可观察性带来好处时才使用它。细节

  • 阅读文档是在这些方法之间进行选择的最佳方式;感谢您在答案中提供直接链接 (2认同)