角度2-检查特定字段是否已更改

时间:2019-05-09 18:42:47

标签: angular

我正在使用Angular应用程序,并且试图弄清楚如何检查表单中的某些特定字段是否已更改。此页面中的用户可以选择输入新记录,或从网格中选择一个选项,然后填充表格。如果他们已经开始输入信息作为新记录,然后决定从网格中进行选择,那么我想检查一下用户是否已经开始填写表格,以及他们是否对其中一个进行了更改特定字段,请在代码继续之前引发确认对话框。

这是我的代码:

checkNewEntry(): boolean {
  let fieldsChanged = false;

  if (this.form.get('field1').dirty) {
    fieldsChanged = true;
  } else if (this.form.get('field2').dirty) {
    fieldsChanged = true;
  } else if (this.form.get('field3').dirty) {
    fieldsChanged = true;
  } 

  return fieldsChanged;
}

除了三个领域之外,还有很多,而且我敢肯定,比起一个巨大的if-else,还有一种更为优雅的方法来解决这个问题,但是我对Angular还是很陌生。我正在考虑在字段上放置一个类,选择那些字段,然后循环浏览并检查它们,但是我很难为此找到方向。

1 个答案:

答案 0 :(得分:1)

如果需要(脏或原始),您可以检查整个表格更改。表单上的任何更改都将触发操作。查看此答案:

How to check for changes in form in Angular 2 using

如果需要一些特定的控件,则可以维护一个布尔值,并在更改这些特定的窗体控件时更改其状态。并在继续之前检查布尔值的状态。

let fieldsChanged = false; 
<input foromControlName ="field1" (change)="setChecker()"></input> 
<input foromControlName ="field2" (change)="setChecker()"></input> 
<input foromControlName ="field3" (change)="setChecker()"></input> 

setChecker() { this.fieldsChanged = true } 

if(this.fieldsChanged) { show dialog }