[ ] 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
Quando a diretiva associada a um controle de formulário é criada na visualização, os validadores são acionados.
Os validadores não devem modelo .
https://stackblitz.com/edit/angular-reactive-forms-issue?file=app/app.component.ts
Observe o fato de que a mensagem de erro agora se foi . Alternar a visualização está zombando do caso de uso de ter um formulário de várias partes.
Se for intencional, não vejo uma razão para isso. Estamos criando uma visão onde escrevemos o modelo de formulário de dados para ver. A ação de leitura do modelo não deve acionar validadores, tanto quanto eu entendo. A meu ver, os validadores devem ser executados quando as instâncias FormControl
são criadas no modelo. _Por que os validadores são acionados quando o valor não mudou? _
<br i="34"/>
Angular version: 4.3.6<br i="35"/>
<!-- Check whether this is still an issue in the most recent Angular version -->
Sim, parece certo.
Uma alteração na visualização não deve afetar o modelo em formas reativas e nenhuma alteração no modelo não deve acionar a validação.
Eu o apontei para https://github.com/angular/angular/blob/17eaef0311990e1a06c028f19bc6c63dcd775f31/packages/forms/src/directives/reactive_directives/form_group_directive.ts#L98 -L104
Está sempre executando uma nova execução de validação ( updateValueAndValidity()
), embora só deva fazer isso se houver novos validadores introduzidos pela diretiva de controle.
Além disso, renomear a função para addControlDirective()
pode reduzir a confusão sobre o que ela está fazendo.
Pode estar de alguma forma relacionado a # 14376, pois é tanto sobre a edição da visualização em uma forma reativa quanto parece que FormGroupDirective
é o culpado.
Comentários muito úteis
Sim, parece certo.
Uma alteração na visualização não deve afetar o modelo em formas reativas e nenhuma alteração no modelo não deve acionar a validação.
Eu o apontei para https://github.com/angular/angular/blob/17eaef0311990e1a06c028f19bc6c63dcd775f31/packages/forms/src/directives/reactive_directives/form_group_directive.ts#L98 -L104
Está sempre executando uma nova execução de validação (
updateValueAndValidity()
), embora só deva fazer isso se houver novos validadores introduzidos pela diretiva de controle.Além disso, renomear a função para
addControlDirective()
pode reduzir a confusão sobre o que ela está fazendo.Pode estar de alguma forma relacionado a # 14376, pois é tanto sobre a edição da visualização em uma forma reativa quanto parece que
FormGroupDirective
é o culpado.