首页 文章

组件ngOnInit中的角度订阅

提问于
浏览
0

我正在学习Angular 5并且最近来到了主题/订阅部分,我看到许多教程想以某种方式使用订阅:

  • 在组件中声明订阅

  • 通过服务主题或ngrx / store在ngOnInit中订阅

  • 在ngOnDestroy中取消订阅

但是,我不确定 we have to subscribe/unsubscribe every subscription in the component in ngOnInit and ngOnDestroy . 例如,如果我的订阅将通过按钮点击事件更新,我应该在我的组件中订阅哪个计划?

  • 仅ngOnInit

  • 仅按钮单击事件

  • ngOnInit和按钮单击事件

Why would we always subscribe a subscription in ngOnInit? ngOnInit就像页面生命周期中的Page_Load,所以它只会在第一次被调用一次,如果这样,每当订阅更新时,ngOnInit会一次又一次地被触发吗?如果是这样,我的组件会一次又一次地加载,如果在大型应用程序中会导致性能问题吗?

1 回答

  • 1

    您通常将Observables订阅到服务内部,并通过getter和setter使它们可用 .

    订阅Observable时,它的行为方式与EventListener类似 . 每当Observable中的对象发生更改时,就会触发一个Event并执行订阅中的代码 . 此外,您将获得更新的对象 .

    即使你在ngOnInit中初始化订阅,这也不会导致整个组件在更新到来时重新加载 . 只有那些由订阅中的代码更新的部分 .

    您不必在ngOnInit()中添加订阅 . 这取决于您希望在组件中实现的目标 . 但是大多数情况下,您希望在访问组件时直接加载和显示数据,并在此数据更改时更新UI . 这就是为什么将订阅放在ngOnInit()中的好习惯 .

相关问题