Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

467
Vistas
Error de plantilla El tipo 'AbstractControl' no se puede asignar al tipo 'FormControl'

¿Por qué recibo este error?

El siguiente código funciona en otra aplicación.

 <input class="form-control form-control-sm" type="number" min="0" [formControl]='invoiceForm.get("quantity")'>

en esta nueva aplicación también funciona pero sigue quejándose en la terminal

 Type 'AbstractControl' is not assignable to type 'FormControl'.
over 4 years ago · Santiago Trujillo
7 Respuestas
Responde la pregunta

0

Puedes probar

 <input class="form-control form-control-sm" type="number" min="0" [formControl]='invoiceForm.controls.quantity'>

o mi forma favorita personal de manejar formularios

 <div [formGroup]="inviceForm"> <!-- any tag that wraps all of your controls --> <!-- some input before (anything)--> <input class="form-control form-control-sm" type="number" min="0" formControlName='quantity'> <!-- some inputs after (anything)--> </div>
over 4 years ago · Santiago Trujillo Denunciar

0

De esta documentación oficial y de acuerdo con la definición de FormControl , podemos ver que FormControl hereda de AbstractControl. Y dado que FormGroup.controls y FormGroup.get("key") ambos devuelven un AbstractControl , tuve que crear una función para pasar de la clase Parent a Child.

 toControl(absCtrl: AbstractControl): FormControl { const ctrl = absCtrl as FormControl; // if(!ctrl) throw; return ctrl; }

y la plantilla

 <input class="form-control form-control-sm" type="number" min="0" [formControl]='toControl(invoiceForm.get("quantity"))'>

PD: no pude usar FormControlName porque tengo muchos grupos de formularios y subgrupos/matrices. Eso es lo que tuve que usar la directiva banana in box, porque su valor está fuertemente tipado

over 4 years ago · Santiago Trujillo Denunciar

0

Pude solucionar este problema dando a la plantilla acceso directo a FormControl y agregándola al formulario en initForm() .

.ts

 form: FormGroup = new FormGroup({}); quantity: FormControl = new FormControl(Quantity.MIN, [ Validators.min(Quantity.MIN), Validators.max(Quantity.MAX), ]); ngOnInit(): void { this.initForm(); } initForm(): void { this.form.addControl('quantity', this.quantity); }

.html (En mi caso, estoy pasando la cantidad de FormControl a un componente personalizado que toma una Entrada de FormControl Input() llamada "control").

 <form [formGroup]="form" (ngSubmit)="submit()"> <app-select-quantity [control]="quantity"></app-select-quantity> <div> <button mat-flat-button type="submit" color="primary" [disabled]="!form.valid" > Submit </button> </div> </form>
over 4 years ago · Santiago Trujillo Denunciar

0

Este problema puede provenir de tsconfig.json si está usando Angular 9 o superior

 "angularCompilerOptions": { ... "strictTemplates": true <-- causing "Type 'AbstractControl' is not assignable to type 'FormControl'" }

Primera opción

configurando "strictTemplates": false podría "resolver" el problema temporalmente

Segunda opción

al convertir AbstractControl a FormControl a través de la plantilla, por lo que su archivo .ts debería tener

 convertToFormControl(absCtrl: AbstractControl | null): FormControl { const ctrl = absCtrl as FormControl; return ctrl; }

y tu html

 <input type="text" [formControl]="convertToFormControl(invoiceForm.get("quantity"))" />
over 4 years ago · Santiago Trujillo Denunciar

0

<input type="password" placeholder="Confirm Password" class="form-control" [formControl]="$any(myForm).controls['confirmpassword']"/>

Use la función $any para deshabilitar la verificación de tipos. Resolví mi error usando esto.

over 4 years ago · Santiago Trujillo Denunciar

0

Si hay diferentes versiones o no hay coincidencias de conversión de 'tipo', puede usar 'cualquiera' como solución temporal. Por ejemplo

Desde :

 event: FormControl

Para :

 event: any
over 4 years ago · Santiago Trujillo Denunciar

0

<input type="name" placeholder="Name" class="form-control" [formControl]="$any(cardForm).controls.name" />

Aquí $any función deshabilitaría la verificación de tipos.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda