Search code examples
typescriptangular11

How to fix ERROR TypeError: Class constructor DyanamicClasses cannot be invoked without 'new'


this code worked in angular 7. But after upgrading to angular 11 it created error


static getInstance<T>(DyanamicClasses, name: string, ...args: any[]) : T {
    const instance = Object.create(DyanamicClasses[name].prototype);
    instance.constructor.apply(instance, args);
    return <T> instance;
}

Class

export namespace DyanamicClasses{
  export class HallmarkMxFieldEditStatusAccessor implements IFieldEditStatus{
    item: any;
    fieldDefinition: FieldDefinition;
    constructor(public _item: any, public _fieldDefinition: FieldDefinition){
      this.item = _item;
      this.fieldDefinition = _fieldDefinition;
    }
  }
}

Solution

  • I changed

    static getInstance<T>(DyanamicClasses, name: string, ...args: any[]) : T {
        const instance = Object.create(DyanamicClasses[name].prototype);
        instance.constructor.apply(instance, args);
        return <T> instance;
    }
    

    To

    ```static getInstance<T>(namspacesName, name: string, ...args: any[]) : T {
        return new (DyanamicClasses)[name](...args);
    }
    

    And this is working now.