web-dev-qa-db-fra.com

Rendre vierge Angular est sale

Il y a une forme réactive dans Angular 4, et un certain contrôle est censé être programmé à un moment donné.

this.form = formBuilder.group({
  foo: ''
});
...
this.form.controls.foo.setValue('foo');

Comment contrôler l'état vierge/sale? Actuellement, j'utilise à la fois form et foo états vierges, quelque chose comme:

<form [formGroup]="form">
  <input [formControl]="form.controls.foo">
</form>

<p *ngIf="form.controls.foo.pristine">
  {{ form.controls.foo.errors | json }}
</p>

<button [disabled]="form.pristine">Submit</button>

Si immaculé/sale est censé désigner uniquement l'interaction humaine et ne peut pas être modifié par programme, quelle solution serait préférable ici?

8
Estus Flask

Chaque instance de formControl a des méthodes markAsDirty() et markAsPristine(), vous devriez donc pouvoir exécuter

this.form.controls.foo.markAsPristine()

ou mieux, en utilisant l'API de formulaires réactifs:

this.form.get('foo').markAsPristine()

ou même

this.form.markAsPristine()

la même chose peut être faite avec la méthode markAsDirty()

26
Andriy