typescript 正在检查服务类型,该服务是forRoot()中的扩展表单库服务

drnojrws  于 2023-03-31  发布在  TypeScript
关注(0)|答案(1)|浏览(112)

我有一个共享库,它有一个forRoot:

shared.module.ts

export class SharedModule {
  public static forRoot(config: {svc: SharedAbstractService}): ModuleWithProviders<SharedModule > {
    return {
          ngModule: SharedModule,
          providers: [
            {
              provide: 'configurationService',
              useExisting: config.svc
            }
          ]
        };
  }
}

它有一个共享抽象服务:

export abstract class SharedAbstractService {
   abstract name: string;
}

现在,当我在客户端应用程序中扩展此服务时,类似于:

@Injectable()
export MyClientService extends SharedAbstractService{
   name = 'Samuel';
  //..... some code
}

然后从客户端app模块注入,例如:

imports: [
  //...
   SharedModule.forRoot({ svc : MyClientService })
  //.. other imports
]

我得到
错误TS2739:类型“typeof MyClientService”缺少类型“SharedAbstractService”的以下属性:名称
shared.module.ts中做类型检查,才能将MyClientService作为参数传递?

nzk0hqpo

nzk0hqpo1#

如下所示尝试Type<SharedAbstractService>

import { Type } from "@angular/core";

export class SharedModule {
  public static forRoot(config: {svc: Type<SharedAbstractService>}): ModuleWithProviders<SharedModule > {
    return {
          ngModule: SharedModule,
          providers: [
            {
              provide: 'configurationService',
              useExisting: config.svc
            }
          ]
        };
  }
}

相关问题