如何在forRoot中使用配置数据

时间:2016-11-03 11:27:50

标签: angular

我不知道如何使用forRoot

在我的应用中,我正在databaseService ngOnInit中配置AppComponent

this.databaseService.addDatabaseData(databaseData);

我想最好使用forRoot,但我不知道该怎么做。 如何在forRoot中使用配置数据?

app.module:

@NgModule({
    imports: [
        DatabaseModule.forRoot(databaseData),
    ]
});

database.module

export class DatabaseModule {
    static forRoot(databaseData: any): ModuleWithProviders {
        /**
        * How to use databaseData?
        * this.databaseService.addDatabaseData(databaseData);
        */
        return {
            ngModule: DatabaseModule,
            providers: [
                DatabaseService
            ]
        };
    }
}

1 个答案:

答案 0 :(得分:1)

使用工厂

providers: [
  {
    provide: DatabaseService,
    useFactory: () => {
      const service = new DatabaseService();
      service.addDatabaseData(databaseData)
      return service;
    }
  }
]

如果DatabaseService需要注入依赖项,那么您可以

providers: [
  Any,
  Dependencies,
  {
    provide: DatabaseService,
    deps: [ Any, Dependencies ],
    useFactory: (any: Any, dependencies: Dependencies) => {
      const service = new DatabaseService(any, dependencies);
      service.addDatabaseData(databaseData)
      return service;
    }
  }
]