我正在学习Angular 5+,最近进入主题/订阅部分,我看到许多教程都希望以某种方式使用订阅:
但是,我不确定我们是否必须订阅/取消订阅ngOnInit和ngOnDestroy 中组件中的每个订阅。例如,如果我的订阅将通过按钮单击事件进行更新,那么我应该在组件中订阅哪个计划?
为什么我们总是在ngOnInit中订阅一个订阅? ngOnInit就像页面生命周期中的Page_Load一样,因此它只会在第一次被调用一次,如果每次订阅都被调用一次更新后,会否一再触发ngOnInit?如果是这样,在大型应用程序中,是否会一遍又一遍地加载我的组件,这会导致性能问题?
答案 0 :(得分:1)
通常您将Observables放在Service内部进行订阅,并通过getter和setter使其可用。
订阅Observable时,其行为类似于EventListener。只要Observable中的对象发生更改,就会触发一个Event并执行您预订中的代码。此外,还提供了更新的对象。
即使您在ngOnInit中初始化订阅,也不会导致更新到达时重新加载整个组件。订阅中只有那些由您的代码更新的部分。
您不必在ngOnInit()内放置订阅。这取决于您要在组件中实现的目标。但是大多数时候,您想在访问组件时直接加载和显示数据,并在数据更改时更新UI。这就是为什么将订阅放入ngOnInit()的好习惯。