Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 在Angular 7+;中以交互方式禁用表单提交按钮的最佳方式是什么;基于当前表单状态?_Html_Angular_Frontend_Web Frontend - Fatal编程技术网

Html 在Angular 7+;中以交互方式禁用表单提交按钮的最佳方式是什么;基于当前表单状态?

Html 在Angular 7+;中以交互方式禁用表单提交按钮的最佳方式是什么;基于当前表单状态?,html,angular,frontend,web-frontend,Html,Angular,Frontend,Web Frontend,这个问题看起来可能有点困惑,但假设我有一个如下按钮: <button type="button" class="menu-button" [disabled]="isInvalidForm()">Save</button isInvalidForm() { console.log('I am running!'); return this.nameValidator.errors || this.lastnameValidator.errors; } 保存如何保存“最佳”?

这个问题看起来可能有点困惑,但假设我有一个如下按钮:

<button type="button" class="menu-button" [disabled]="isInvalidForm()">Save</button

isInvalidForm() {
console.log('I am running!');
return this.nameValidator.errors || this.lastnameValidator.errors;
}

保存
如何保存“最佳”?您拥有的代码没有什么作用,所以如果它被调用数千次,谁会在乎呢?您是通过函数调用还是其他方式付款?;)@异端猴子-它只是让人觉得我做错了什么,因为它被称为很多。是的,这没什么作用,但我很在乎。我不希望它被称为如果它是不必要的,如果有更好的方式来做。谢谢你的反馈谢谢,但我的观点是,使用一个也只是返回的函数是完全一样的吗!form.valid?据我所知,这是禁用表单的常用方法。对函数和日志的调用只是角度的变化检测。我不认为使用函数或直接绑定包装from.valid会对更改检测产生影响。@curiousBoy,使用表单的优势。valid是您可以选择何时完成“检查”:“更改时”、“模糊时”或“提交时”。使用,例如,
{updateOn:'blur'}
您只检查blur,请参阅@Eliseo finally!!!这就是我一直在寻找的答案。谢谢。所以我可以通过限制回调到某个特定事件,而不是每个循环,从技术上减少回调的数量。您认为这些回调对性能有什么影响吗?只要它只是检查表单验证程序错误(即使有10,20个表单控件),它最终会对性能产生人类可识别的影响吗?我查找了验证的来源,验证状态存储为字符串。form.valid仅返回与此变量的字符串比较
this.status=='valid'
。验证只在表单更改上运行,而不是在每个模板更改检测上运行。在FormGroups/FormArray中,仅验证更改的控件及其父状态,而不是表单的所有控件。只要您的验证器没有长时间运行(例如http请求),就不应该存在人类可识别的延迟。
<button type="button" class="menu-button" [disabled]="isInvalidForm()">Save</button>
  <button type="button" class="menu-button" [disabled]="nameValidator.errors || lastnameValidator.errors">Save</button>
<button type="button" class="menu-button" [disabled]="!form.valid">Save</button