angular - navigationend - ¿Cómo establecer una forma como prístina?
title angular (3)
- La forma que representa el estado de la entidad se está editando (se vuelve sucia)
- Se está enviando el formulario y el estado de la entidad ahora está alineado con el estado del formulario, lo que significa que el formulario ahora debe establecerse como prístino.
¿Como hacemos eso? Había $setPristine()
en ng1. Por cierto, estoy hablando del tipo de formulario ControlGroup
.
Existe el método markAsPristine
(parece no documentado por ahora, pero se puede encontrar aquí: https://github.com/angular/angular/blob/53f0c2206df6a5f8ee03d611a7563ca1a78cc82d/tools/public_api_guard/forms/index.d.ts#L42 .
Básicamente, this.form.markAsPristine()
hace lo que usted espera.
actualizar
En el nuevo módulo de formularios esto fue mejorado mucho.
AbstractControl
, la clase base de la mayoría de las clases de formularios proporciona
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
Y varios otros métodos nuevos.
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
Eso no es compatible actualmente. Consulte https://github.com/angular/angular/issues/5568 y https://github.com/angular/angular/issues/4933 . La solución habitual es volver a crear el formulario para obtener una prístina.
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
Esto se mostrará en rc5 o posterior.