当前位置: 首页 > 知识库问答 >
问题:

组件ngOnInit中的角度订阅

南宫勇军
2023-03-14

我正在学习Angular 5+,最近来到主题/订阅部分,我看到很多教程都希望以特定的方式使用订阅:

  1. 在组件中声明订阅
  2. 通过服务的主题或ngrx/store在ngOnInit中订阅
  3. 在ngondestroy中取消订阅
    null

共有1个答案

吴正祥
2023-03-14

您通常将可观察到的内容放在服务内部订阅,并通过getter和setter使其可用。

当订阅一个Observable时,它的行为在某种程度上类似于EventListener。每当Observable中的对象发生更改时,就会触发一个事件,并执行订阅中的代码。此外,您还会得到更新的对象。

即使您在ngOnInit中初始化订阅,这也不会导致在更新到达时重新加载整个组件。只有在订阅中被代码更新的部分。

您不必将订阅放在ngOnInit()中。这取决于您希望在组件中实现什么。但大多数时候您希望在访问组件时直接加载和显示数据,并在此数据更改时更新UI。这就是为什么将订阅放在ngOnInit()中是一个好的实践。

 类似资料:
  • 使用Angular ,我正在创建一个属性组件并向其中注入一个值。为此,我在这里跟随答案。 我想知道有没有一种方法,就像在AngularJS中一样,直接在组件中输入一个值,而不需要定义单独的< code>[form]=""。例如:<代码> 导致“。 我正在尝试将我的表单(通过变量)注入组件,但我不想进行其他绑定,例如根据这里的帖子,这应该是可能的,但我无法工作。自从更高的Angular版本以来,这种

  • 我在Angular2中有一个简单的自定义管道,用于根据类型ID和年份数组过滤数组,我定义如下: 下面是从调用组件使用它的地方: 过滤器运行良好,并根据类型和年份的 2 个复选框列表数组进行更新(使用数组进行过滤,因此管道上的“pure: false”)。 我的问题是,如何在ngFor之外获得FILTERED COUNT来显示管道的过滤结果计数?我有highlightedWorks。长度作为总结果计

  • 角度4 大家好。我有一个大的Angular4应用程序中的单一页面,需要有不同于应用程序其他部分的正文css。 我不想设置ViewEncapsulation.None,因为它只是需要受影响的一个组件。 我可以用某种方式使用:host()、:host-context()或::ng-deep来选择主体并应用css规则吗?如果是的话,那你怎么会高兴呢?如果没有,是否有其他方法可以做到这一点? 谢谢!

  • 我需要帮助在Angular 4中显示来自api的subscribe的输出。既然我写了数据,我该怎么做呢。数据数据,但它表示类型对象上不存在属性数据。如何在浏览器中输出?下面是我的代码和api图片

  • 我有一个带有的组件和一个方法。 登录完成后,如何更新组件并再次执行Ngonit方法? 服务:

  • 在angular 2中,假设我有一条使用组件的路线: 现在,如果我直接导入组件,这就可以了: 但是我应该如何导入模块呢? 这不起作用,因为不是在模块文件中定义的,而是在组件文件中定义的。 以便组件加载模块的所有可用导入和声明? 根据@HristoKolev的建议,我在模块中添加了以下内容: 这允许路由从模块中查看基本表单组件。 但是,BasicForm组件似乎没有看到从NgMoules导入。特别是