代码之家  ›  专栏  ›  技术社区  ›  Chanaka Amarasinghe

angular ngoninit()和ngonchanges()有什么区别?

  •  2
  • Chanaka Amarasinghe  · 技术社区  · 6 年前

    默认情况下,Angular提供生命周期钩子Ngoninit()和Ngonchanges()。 如果我们已经有了ngonchanges,为什么要使用ngoninit?以及构造器。

    5 回复  |  直到 6 年前
        1
  •  4
  •   NitinSingh    6 年前

    如何设置窗体

    0。静态设计 HTML标记应该包含设计的结构和布局。任何永久类都将直接应用于标记中。

    1。构造函数

    设置依赖项,如服务、提供者、配置等。这些使组件能够管理自身以及与其他元素的交互。

    2。初始值设定项(ngoninit)

    当要从外部源检索窗体元素(而不是在设计时已知)的值时,填充窗体元素(如下拉列表等)。只有在设置窗体的初始呈现时才执行此操作一次

    三。输入更改(ngonchanges)

    对任何输入的每个更改运行,并执行由该特定控件触发的任何操作。例如,如果有多个输入,并且一个输入上有任何验证失败,则需要关注失败的控件并禁用 全部的 其他人,你可以在这里做。对验证逻辑有用。

    不用于处理其他控件的布局和结构。

    如果一个控件影响其他控件,则此操作经常递归运行,因此必须仔细设计逻辑。

    如果要阻止此操作运行,可以禁用角度变化检测并手动处理状态。

    4。控件的事件处理程序 在这里,您接受控件的最终值,并使用它对表单中的其他控件执行操作。一旦更改其他控件的值,ngonchanges事件将再次激发。

        2
  •  7
  •   Amit Chigadani    6 年前

    保持很短的时间。

    ngOnInit() 用于只执行一次任何代码片段(例如:加载时数据获取)。

    ngOnChanges() 将在每个 @Input() 财产变更。

    如果要执行任何组件方法,请基于 @输入() 值更改,那么您应该在内部编写这样的逻辑 Ngonchanges() .

    正如你所说为什么我们需要 nGunIn() 当我们拥有 ngOnChanges(), 这是因为您不能在每个 @输入() 财产变更。你不能使用 constructor 作为 nGunIn() 也。因为那不是角生命周期挂钩的一部分。

    我想你会明白的 Diff between OnInit and constructor

        3
  •  1
  •   Padmapriya Vishnuvardhan    6 年前

    当通过父项更改组件输入时,将首先在生命周期挂钩上调用ngonchanges。

    在调用第一个ngonchanges之后,在初始化组件时只调用一次ngonnit。

        4
  •  0
  •   kzrfaisal    6 年前

    每当其组件的输入绑定属性更改时,将调用ngonChanges(),它将接收一个名为simpleChanges的对象,该对象包含已更改和以前的属性。

    ngoninit()用于初始化组件中的内容,与ngonChanges()不同,它只在第一个ngonChanges()之后调用一次。

        5
  •  -1
  •   Przemek Struciński    5 年前

    ngoninit和ngonchanges是属于组件生命周期方法组的函数,它们在组件的不同时刻执行(这就是命名生命周期的原因)。以下是所有这些的列表:

    enter image description here