Angular ngModel绑定是否总是在更改事件之前?

Angular ngModel绑定是否总是在更改事件之前?,angular,Angular,在以下示例中,文本框具有关联的ngModel绑定以及更改函数: <input type="text" [(ngModel)] = "typedText" (change)="calculateTextLength()" /> 根据我有限的经验,“calculateTextLength()”函数只有在“typedText”变量中的输入文本更新后才被调用 我能知道这些是否有优先顺序吗?首先,我们需要了解(更改)不是“角度事

在以下示例中,文本框具有关联的ngModel绑定以及更改函数:

<input type="text" [(ngModel)] = "typedText" (change)="calculateTextLength()" />

根据我有限的经验,“calculateTextLength()”函数只有在“typedText”变量中的输入文本更新后才被调用


我能知道这些是否有优先顺序吗?

首先,我们需要了解
(更改)
不是“角度事件”,而是DOM事件。如果需要动态绑定,可以使用名为
(ngModelChange)
的事件,而不是
(更改)
。我认为这应该可以解决这个问题。标签中属性的顺序并不重要,但您可以随时重新排列它们,以便更好地理解

要在这里解释过程,我们应该注意以下几点:

  • change
    不是一个“角度事件”,而是一个事件
  • 我们可以在任何地方使用
    change
    (不链接到角度系统)
  • change
    将在用户模糊(~离开)输入时触发(我们这里讨论的是DOM,而不是角度)
  • 在Angular中,虽然不需要在同一个元素中使用
    change
    ngModel
    (Angular的
    ngModelChange
    ),但如果我们同时使用它们,它将在绑定到
    [(ngModel)]
    的值更改后触发

  • 有一个角度化版本的
    change
    ,它是
    ngModelChange
    :一个角度事件,当(之前)
    ngModel
    改变时触发
  • 如果没有
    ngModel
    ,我们就无法使用
    ngModelChange
    (而不是
    change
  • ngModelChange
    仅在打算更新模型时才会触发,即本质上是监听输入事件,并在用户键入、粘贴或更改输入值时设置模型,这意味着:将在绑定到
    [(ngModel)]
    的值发生更改之前触发。

谢谢@Mridul