J'essaie de faire passer des données de configuration dans une bibliothèque personnalisée en Angular.
Dans l'application des utilisateurs ils transmettront des données de configuration à ma bibliothèque en utilisant la méthode suivante forRoot
// Import custom library
import { SampleModule, SampleService } from 'custom-library';
...
// User provides their config
const CustomConfig = {
url: 'some_value',
key: 'some_value',
secret: 'some_value',
API: 'some_value'
version: 'some_value'
};
@NgModule({
declarations: [...],
imports: [
// User config passed in here
SampleModule.forRoot(CustomConfig),
...
],
providers: [
SampleService
]
})
export class AppModule {}
Dans ma bibliothèque personnalisée et plus particulièrement le index.ts
Je peux accéder aux données de configuration :
import { NgModule, ModuleWithProviders } from '@angular/core';
import { SampleService } from './src/sample.service';
...
@NgModule({
imports: [
CommonModule
],
declarations: [...],
exports: [...]
})
export class SampleModule {
static forRoot(config: CustomConfig): ModuleWithProviders {
// User config get logged here
console.log(config);
return {
ngModule: SampleModule,
providers: [SampleService]
};
}
}
Ma question est la suivante : comment rendre les données de configuration disponibles dans la bibliothèque personnalisée ? SampleService
Actuellement SampleService
contient les éléments suivants :
@Injectable()
export class SampleService {
foo: any;
constructor() {
this.foo = ThirdParyAPI(/* I need the config object here */);
}
Fetch(itemType:string): Promise<any> {
return this.foo.get(itemType);
}
}
J'ai lu les documents sur Prestataires Toutefois, l forRoot
L'exemple est assez minimal et ne semble pas couvrir mon cas d'utilisation.
0 votes
Avez-vous pu passer une carte à votre configuration personnalisée ? quelque chose comme ceci myMap : Map<string, string[]> ; J'essaie de passer une carte mais cela ne fonctionne pas si j'active l'AOT (ng serve --AOT).