Une dĂ©pendance peut ĂȘtre de type string
ou "objet literal" ou mĂȘme sans type. Cf. https://angular.io/api/core/InjectionToken.
Pour des raisons de lisibilité et de maintenabilité, évitez l'utilisation d'InjectionToken
et préférez l'utilisation de classes.
Au lieu de :
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;}}
â