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