更改文本框的事件或单击按钮的按钮。Angular 5.5中调用方法的行为不一致

更改文本框的事件或单击按钮的按钮。Angular 5.5中调用方法的行为不一致,angular,onclick,onchange,Angular,Onclick,Onchange,我有一个3控件的窗体。2个文本框以角度形式显示A、B和Save按钮。 现在,当用户更改文本框a中的任何内容并移动到不同的文本框时;我们正在调用一个web API方法,该方法返回Textbox B的更新值 当用户在文本框A中键入内容时(注意:onchange尚未调用。仅当移动到其他控件时才会调用它),只需单击“保存”按钮,而不是单击“执行”选项卡,问题就会出现。此时,有时会调用onchange和save两个方法,有时只调用onchange。 不知道为什么会发生这种情况 <text name=

我有一个3控件的窗体。2个文本框以角度形式显示A、B和Save按钮。 现在,当用户更改文本框a中的任何内容并移动到不同的文本框时;我们正在调用一个web API方法,该方法返回Textbox B的更新值

当用户在文本框A中键入内容时(注意:onchange尚未调用。仅当移动到其他控件时才会调用它),只需单击“保存”按钮,而不是单击“执行”选项卡,问题就会出现。此时,有时会调用onchange和save两个方法,有时只调用onchange。 不知道为什么会发生这种情况

<text name='TextboxA' [(ngmodel)]='valueA' (change)='callwebapi(someval)'> 
</text> 
<text name='TextboxB' [(ngmodel)]='valueB' > </text>
<button (click)='savebothAB()'></button>


请注意,文本框仅为数字

请尝试使用其他类型的事件,如:

<text name='TextboxA' [(ngmodel)]='valueA' (blur)='callwebapi(someval)'> 
</text>

这将在文本框失去焦点时触发api调用。我不知道这是否是desireb行为,但您应该使用其他类型的事件来triiger api调用

请参阅本指南以查看所有可能的事件句柄:


找到了解决方案,以防有人遇到同样的问题。Angular调用OnChange和Button click一致,必须通过回调或承诺来处理