Pour des raisons de lisibilité et de maintenabilité, évitez l'utilisation d'InjectionToken
et préférez l'utilisation de classes.
export const API_BASE_URL = new InjectionToken<string>('ApiBaseUrl');
@NgModule({
providers: [
{
provide: API_BASE_URL,
useValue: 'https://api.wishtack.io/api/v2'
}
]
})
export class AppModule {
}
@Component({
...
})
export class AppComponent {
constructor(@Inject(API_BASE_URL) apiBaseUrl: string) {
}
}
... préférez donc l'approche ci-dessous afin de bénéficier sans effort du "typing" TypeScript et éviter l'utilisation du décorateur @Inject()
.
export class Config {
readonly apiBaseUrl: string;
}
@Injectable()
export class CustomConfig extends Config {
apiBaseUrl = 'https://api.wishtack.io/api/v2';
}
@NgModule({
providers: [
{
provide: Config,
useClass: CustomConfig
}
]
})
export AppModule {
}
@Component({
...
})
export class AppComponent {
constructor(config: Config) {
this.apiBaseUrl = config.apiBaseUrl;
}
}