terwijl de meesten van u waarschijnlijk bekend zijn met de basis manier om een provider te configureren door ze simpelweg te declareren:

providers: 

injectie van Hoekafhankelijkheid biedt meer geavanceerde mogelijkheden.

Met Factory provider kunt u de Injector configureren om een waarde te retourneren door een specifieke functie aan te roepen. Laten we eens kijken naar dit voorbeeld.

providers: };

De provide eigenschap configureert het token dat zal worden gebruikt in dependency injection en de useFactory wijst naar de functie die zal worden gebruikt om de gewenste waarde te retourneren. De eigenschap Deps configureert de tokens die worden doorgegeven aan uw fabrieksfunctie.

Wanneer moet ik het gebruiken?

Factory provider kan erg handig zijn als je een afhankelijke waarde dynamisch moet maken, gebaseerd op informatie die je niet hebt tot de looptijd. U kunt een weloverwogen beslissing nemen over welke waarde u wilt retourneren op basis van andere services en applicatiestatus.

voorbeeld:

laten we proberen te raden van welk mobiel apparaat een gebruiker is ingelogd. We zullen proberen om informatie te gebruiken zoals de browser user-agent, schermbreedte en schermhoogte. Laten we definiëren drie token die later zal worden gebruikt om de naam van het apparaat te identificeren.

de InjectionTokenklasse — maakt een token aan die gebruikt kan worden bij injectie van Hoekafhankelijkheid. InjectionToken wordt geparametreerd op T dat is het type object dat zal worden geretourneerd door de Injector. Dit zorgt voor een extra veiligheidsniveau.

providers: providers: providers: 

nu kunnen we een algoritme bedenken om de apparaatnaam te detecteren op basis van de drie tokens die we hierboven hebben gedefinieerd. We geven een pijl functie door aan de useFactory die 3 afhankelijkheden heeft, om die afhankelijkheden op te lossen, gaan we door in een dependency array (dep) met de vermelde tokens.

providers: 

ten slotte zullen we de apparaatnaam in onze Hoekcomponent gebruiken.

@Component({ selector: 'my-device-name')
export class DeviceName {
constructor(@Inject('DeviceName') private deviceName: string) {}}

De inject parameter decorator geeft aan Angular DI aan dat deze parameter (deviceName) moet worden opgelost vanuit een gedefinieerde token — DeviceName.

dat is alles!

Volg mij op Twitter #LanoTechno

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.