简体   繁体   中英

How to use config data in forRoot

I don't know how to use forRoot .

In my app I'm configuring databaseService in ngOnInit of AppComponent :

this.databaseService.addDatabaseData(databaseData);

I guess it will be better to use forRoot for that but I have no idea how to do it. How to use config data in 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
            ]
        };
    }
}

Use a factory

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

If the DatabaseService requires injected dependencies, then you could do

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM