Búsqueda de sitios web

angular - No se puede asignar un tipo de constructor abstracto a un tipo de constructor no abstracto


Estoy intentando crear un componente abstracto en Angular pero estoy recibiendo el siguiente error:

Error: src/app/app.module.ts:191:5 - error TS2322: Type 'typeof AbstractFormComponent' is not assignable to type 'any[] | Type<any>'.
  Type 'typeof AbstractFormComponent' is not assignable to type 'Type<any>'.
    Cannot assign an abstract constructor type to a non-abstract constructor type.

191     AbstractFormComponent
        ~~~~~~~~~~~~~~~~~~~~~

Este es mi Componente abstracto:

@Component({
  selector: 'app-abstract-form',
  templateUrl: './abstract-form.component.html',
  styleUrls: ['./abstract-form.component.scss']
})
export abstract class AbstractFormComponent implements OnInit, AfterViewInit {

  protected constructor(protected formService: FormService) {
  }

  protected abstract getForms(): AbstractControl[];

  ngOnInit(): void {
  }

  ngAfterViewInit(): void {
    this.getForms().forEach(f => this.formService.addForm(f));
  }
}

Parece que Angular tiene problemas con el constructor, pero necesito el constructor para el servicio, así que no puedo eliminarlo. ¿Hay alguna manera de que pueda usar clases abstractas con un constructor/inyectando servicios?

Respuesta #1

La solución es simplemente no agregar el componente abstracto a app.modules. Todavía puedo usarlo como Componente abstracto y no recibo ningún error.

Artículos relacionados