Comment fait-on cela? Il y avait $setPristine()
dans ng1 . Btw, je parle du type de formulaire ControlGroup
.
Il y a la méthode markAsPristine
(elle semble non documentée pour l'instant, mais peut être trouvée ici: https://github.com/angular/angular/blob/53f0c2206df6a5f8ee03d611a7563ca1a78cc82d/tools/public_apard_forms/index.d ).
En gros, this.form.markAsPristine()
fait ce que vous attendez.
mettre à jour
Dans le nouveau module de formulaires, cela a été beaucoup amélioré.
AbstractControl
, la classe de base de la plupart des classes de formulaire fournit
markAsTouched({onlySelf}?: {onlySelf?: boolean}) : void
markAsUntouched({onlySelf}?: {onlySelf?: boolean}) : void
markAsDirty({onlySelf}?: {onlySelf?: boolean}) : void
markAsPristine({onlySelf}?: {onlySelf?: boolean}) : void
markAsPending({onlySelf}?: {onlySelf?: boolean}) : void
Et plusieurs autres nouvelles méthodes
disable({onlySelf, emitEvent}?: {onlySelf?: boolean, emitEvent?: boolean}) : void
enable({onlySelf, emitEvent}?: {onlySelf?: boolean, emitEvent?: boolean}) : void
setValue(value: any, options?: Object) : void
patchValue(value: any, options?: Object) : void
reset(value?: any, options?: Object) : void
updateValueAndValidity({onlySelf, emitEvent}?: {onlySelf?: boolean, emitEvent?: boolean}) : void // (old)
setErrors(errors: {[key: string]: any}, {emitEvent}?: {emitEvent?: boolean}) : void
original
Ce n'est actuellement pas pris en charge. Voir https://github.com/angular/angular/issues/5568 et https://github.com/angular/angular/issues/4933 . La solution habituelle consiste à recréer le formulaire pour en obtenir un vierge.
class MyComp {
form = new FormGroup({
first: new FormControl('Nancy'),
last: new FormControl('Drew')
});
}
reset() {
this.form.reset(); // will reset to null
// this.form.reset({first: 'Nancy', last: 'Drew'}); -- will reset to value specified
}
https://github.com/angular/angular/pull/9974
Cela apparaîtra dans rc5 ou plus tard.