簡體   English   中英

Angular 6庫根提供者與工廠

[英]Angular 6 library root Provider with factory

我正在嘗試使用需要從最終用戶應用程序進行配置的服務來構建庫。

但是,當我構建庫時,會收到以下警告:

警告:在...中無法解析CacheService的所有參數。這將成為Angular v6.x中的錯誤

這是代碼:

@Injectable()
export class CacheService {
  private config: Config;

  constructor(config: Config) {
    this.config = config;
  }
}

@NgModule({

})
export class MyModule {
  static forRoot(config: Config): ModuleWithProviders {
    return {
      ngModule: MyModuleRoot,
      providers: [
        { provide: CacheService, useFactory: cacheServiceFactory, deps: [config] }
      ]
    };
  }
}

export function cacheServiceFactory(config: Config): CacheService {
  return new CacheService(config);
}

當我嘗試在構造函數中注入CacheService來運行我的主應用程序時,得到了AppComponent_Host.ngfactory.js嗎? [sm]:1錯誤錯誤:StaticInjectorError(AppModule)[CacheService-> [object Object]]:

但是我不想注入它,而是使用我創建的工廠...

我的代碼有什么問題?

好的,這是解決方案,

您需要提供配置,以便可以將其注入服務中。 這樣,就不需要工廠了!

@NgModule({

})
export class MyModule {

  static forRoot(config: Config): ModuleWithProviders {
    return {
      ngModule: MyModuleRoot,
      providers: [
        { provide: Config, useValue: config },
        CacheService
      ]
    };
  }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM