即使设置为原始值,angular2 formcontrol仍保持脏状态

Gal*_*dor 7 forms angular

当我在输入字段中更改值时,相应的表单控件将被设置为脏。当我还原更改(通过在输入字段中键入)时,表单控件保持脏状态。这是故意的,这是错误还是我做错了?

ben*_*boe 6

好吧,是的,它打算以这种方式工作,因为:

控件是dirty用户是否更改了UI中的值。(docs条目

..如果值与起始值不同,则不是。


如果你想恢复脏状态,你可以在桌面上使用markAsPristine()docs条目AbstractControl。(例如,通过单击按钮或订阅的valueChanges观察AbstractControl值来触发它,并将新值与先前存储的值进行比较...)

  • 好吧:例如,您面前有一杯(干净且晶莹剔透的)水。您拿杯饮料喝了一些水,然后再补充至其原始的毫升数。.您玻璃杯中的水毫升数可能仍然相同,但其上有您的指纹..因此,它现在很脏..所以我们为此,我们使用了名为`markAsPristine()`的洗碗机 (6认同)
  • 是的,`user3725805`是正确的-**被感动**。否则,即使在我们冲洗玻璃杯并重新装满玻璃杯之后,_dirwasher_认为仍然存在反冲洗,为什么“脏污”仍然存在?对不起,这绝对是胡说八道。因此,Angular团队说:“嘿,让我们对'脏'的含义给出一个完全丑陋的定义,以便没人能清楚地知道该表单看起来是否像输入之前一样”。” **如何判断表单看起来是否与输入之前完全一样,然后??????????????????? ** (6认同)
  • 但这不是脏字的意思 (2认同)
  • “touched”表示用户访问了该控件,无论值是否已更改。这作为与 dirty 分开的事件很有用,因为我们可能想知道用户何时模糊(触摸)输入,即使值相同(例如,仅在访问输入后才显示无效状态)。如果您想知道控件是否已更改,请存储原始值,使用“valueChanges”监听输入的更改,并将新值与原始值进行比较。 (2认同)