[ ] Regression (a behavior that used to work and stopped working in a new release)
[x] Bug report <!-- Please search GitHub for a similar issue or PR before submitting -->
[ ] Feature request
[ ] Documentation issue or request
[ ] Support request => Please do not submit support request here, instead see https://github.com/angular/angular/blob/master/CONTRIBUTING.md#question
Cuando se crea la directiva asociada con un control de formulario en la vista, se activan los validadores.
Los validadores no deben activarse cuando cambia la vista . Las formas reactivas no deben estar vinculadas a la forma en que se representan en la vista. Su fuente de verdad debería ser el modelo .
https://stackblitz.com/edit/angular-reactive-forms-issue?file=app/app.component.ts
Observe el hecho de que el mensaje de error ha desaparecido . Alternar la vista es burlarse del caso de uso de tener una forma de múltiples partes.
Si esto es por diseño, no veo una razón para ello. Estamos creando una vista donde escribimos el modelo de formulario de datos para ver. La acción de leer desde el modelo no debería activar validadores, hasta donde yo entiendo. Como lo veo, los validadores deben ejecutarse cuando se crean las instancias FormControl
en el modelo. _¿Por qué se activan los validadores cuando el valor no cambió? _
<br i="34"/>
Angular version: 4.3.6<br i="35"/>
<!-- Check whether this is still an issue in the most recent Angular version -->
Sí suena bien.
Un cambio en la vista no debería afectar el modelo en formas reactivas y ningún cambio en el modelo no debería activar la validación.
Lo señalé con alfiler a https://github.com/angular/angular/blob/17eaef0311990e1a06c028f19bc6c63dcd775f31/packages/forms/src/directives/reactive_directives/form_group_directive.ts#L98 -L104
Siempre está ejecutando una nueva ejecución de validación ( updateValueAndValidity()
), mientras que solo debería hacerlo si la directiva de control introdujo nuevos validadores.
También cambiar el nombre de la función a addControlDirective()
puede reducir la confusión sobre lo que está haciendo.
Puede estar relacionado de alguna manera con # 14376, ya que se trata de editar la vista en un formulario reactivo y parece que FormGroupDirective
tiene la culpa.
Comentario más útil
Sí suena bien.
Un cambio en la vista no debería afectar el modelo en formas reactivas y ningún cambio en el modelo no debería activar la validación.
Lo señalé con alfiler a https://github.com/angular/angular/blob/17eaef0311990e1a06c028f19bc6c63dcd775f31/packages/forms/src/directives/reactive_directives/form_group_directive.ts#L98 -L104
Siempre está ejecutando una nueva ejecución de validación (
updateValueAndValidity()
), mientras que solo debería hacerlo si la directiva de control introdujo nuevos validadores.También cambiar el nombre de la función a
addControlDirective()
puede reducir la confusión sobre lo que está haciendo.Puede estar relacionado de alguna manera con # 14376, ya que se trata de editar la vista en un formulario reactivo y parece que
FormGroupDirective
tiene la culpa.