angular - 在 Angular 中,订阅和订阅的目的是什么?我们应该在哪里使用(构造函数或 ngOnInit)?
问题描述
我在Angular中遇到了很多带有subscribe方法的代码,如果我们不使用它们会失去什么?
为什么所有使用 subscribe 的代码都写在构造函数而不是 ngOnInit 中?
constructor(private router: Router) {
m_Router.events.filter(event => event instanceof XComponent)
.subscribe(e => {
...
});
}
解决方案
订阅服务的最佳实践是在ngOnInit() 生命周期钩子方法中,
您可以在有关角度服务的官方文档中阅读此内容:示例getHeroes
服务:
在 ngOnInit 中调用 虽然您可以在构造函数中调用 getHeroes(),但这不是最佳实践。
保留构造函数用于简单的初始化,例如将构造函数参数连接到属性。构造函数不应该做任何事情。它当然不应该像真正的数据服务那样调用向远程服务器发出 HTTP 请求的函数。
相反,在 ngOnInit 生命周期钩子中调用 getHeroes() 并让 Angular 在构建 HeroesComponent 实例后的适当时间调用 ngOnInit。
ngOnInit() {
this.getHeroes();
}
推荐阅读
- c++ - 声明期间的 C++ 赋值运算符
- sql - SSMS 能够与 localhost\foo 连接,但不能仅与 localhost 连接
- javascript - 如何根据月份和日期对该数组进行排序?
- delphi - 德尔福 10.4 和印地 9
- python - 无法解析 QGIS 中的函数
- apache-kafka - 在 Kafka 中,如何找到给定开始日期和结束日期(或说时间戳)之间所有分区的偏移量并重播 msgs
- reactjs - 如何在 google-map-react 中传递道具数据
- python - 大约一周前计算每组的价值差异
- python-3.x - 通过 python3 将用户输入发送到 Windows 终端
- reactjs - 用于服务器端渲染时,Swiper 有时会很大