Para todos los controles de formulario personalizados, debes registrar un accessor de valor.
Aquí hay un ejemplo de cómo proporcionar uno:
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => MyInputField),
multi: true,
}
]Como se describió anteriormente, se esperaba que tu control tuviera un accessor de valor, pero le faltaba uno. Sin embargo, hay muchas razones diferentes por las que esto puede suceder en la práctica. Aquí hay una lista de algunos problemas conocidos que llevan a este error.
- Si definiste un control de formulario personalizado, ¿recuerdas proporcionar un accessor de valor?
- ¿Pusiste
ngModelen un elemento sin valor, o en un elemento inválido (por ejemplo,<div [(ngModel)]="foo">)? - ¿Estás usando un control de formulario personalizado declarado dentro de un
NgModule? Si es así, asegúrate de estar importando elNgModule. - ¿Estás usando
ngModelcon un control de formulario personalizado de terceros? Verifica si ese control proporciona un accessor de valor. Si no lo hace, usangDefaultControlen el elemento del control. - ¿Estás probando un control de formulario personalizado? Asegúrate de configurar tu testbed para que conozca el control. Puedes hacerlo con
Testbed.configureTestingModule. - ¿Estás usando Nx y Module Federation con webpack? Tu
webpack.config.jspuede requerir configuración adicional para asegurarte de que el paquete de formularios sea compartido.