首页 > 解决方案 > 如何修复错误类型错误:没有'new'就不能调用类构造函数DynamicClasses

问题描述

此代码在 Angular 7 中工作。但在升级到 Angular 11 后,它产生了错误


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

班级

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;
    }
  }
}

标签: typescriptangular11

解决方案


我变了

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

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

这正在起作用。


推荐阅读