Lors de l'initialisation d'une application Angular 2, il est crucial de fournir les paramètres nécessaires à la configuration. Dans les scénarios où ces paramètres sont générés sur le backend, il est nécessaire de les transmettre pendant le processus d'amorçage.
Pour définir des en-têtes HTTP pour toutes les requêtes, vous pouvez utiliser Angular mécanisme d’injection de dépendances. Dans main.ts, l'approche suivante peut être utilisée :
import { bootstrap } from '@angular/platform-browser-dynamic'; import { AppComponent } from './app.component.ts'; const headers = ... // Retrieve headers from the backend bootstrap(AppComponent, [{ provide: 'headers', useValue: headers }]);
Au sein de vos composants ou services, vous pouvez injecter ces en-têtes en utilisant :
class SomeComponentOrService { constructor(@Inject('headers') private headers) { } }
Alternativement, vous pouvez fournir une sous-classe personnalisée de BaseRequestOptions qui encapsule les éléments nécessaires headers :
class MyRequestOptions extends BaseRequestOptions { constructor (private headers) { super(); } } const values = ... // Get headers from the backend const headers = new MyRequestOptions(values); bootstrap(AppComponent, [{ provide: BaseRequestOptions, useValue: headers }]);
Dépendances cycliques :
L'injection de dépendances nécessaires peut parfois conduire à des dépendances cycliques. Pour résoudre ce problème, vous pouvez injecter l'injecteur et récupérer les dépendances via celui-ci :
constructor(injector: Injector) { this.myDep = injector.get(MyDependency); }
Initialisation paresseuse avec APP_INITIALIZER :
Pour les scénarios où vos dépendances nécessitent une initialisation supplémentaire avant le démarrage de l'application, vous pouvez utiliser le fournisseur APP_INITIALIZER. Il retarde l'initialisation et le démarrage jusqu'à ce que la promesse renvoyée par la fonction d'initialisation soit résolue.
Approches associées :
Une approche alternative consiste à utiliser le jeton CONFIG pour transmettre les données de configuration. pendant le bootstrap. Cependant, cette méthode n'est pas aussi flexible que les méthodes décrites ci-dessus puisqu'elle nécessite que la configuration soit présente dans le code de l'application.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!