Enciclopédia de Erros

Value accessor ausente

Para todos os form controls customizados, você deve registrar um value accessor.

Aqui está um exemplo de como fornecer um:

providers: [  {    provide: NG_VALUE_ACCESSOR,    useExisting: forwardRef(() => MyInputField),    multi: true,  }]

Depurando o erro

Conforme descrito acima, seu control deveria ter um value accessor, mas estava faltando um. No entanto, há muitas razões diferentes pelas quais isso pode acontecer na prática. Aqui está uma listagem de alguns problemas conhecidos que levam a este erro.

  1. Se você definiu um form control customizado, você se lembrou de fornecer um value accessor?
  2. Você colocou ngModel em um elemento sem valor, ou em um elemento inválido (ex.: <div [(ngModel)]="foo">)?
  3. Você está usando um form control customizado declarado dentro de um NgModule? Se sim, certifique-se de que você está importando o NgModule.
  4. Você está usando ngModel com um form control customizado de terceiros? Verifique se esse control fornece um value accessor. Caso contrário, use ngDefaultControl no elemento do control.
  5. Você está testando um form control customizado? Certifique-se de configurar seu testbed para conhecer o control. Você pode fazer isso com Testbed.configureTestingModule.
  6. Você está usando Nx e Module Federation com webpack? Seu webpack.config.js pode requerer configuração extra para garantir que o pacote de forms seja compartilhado.