míg a legtöbben valószínűleg ismerik a Szolgáltató konfigurálásának alapvető módját, egyszerűen deklarálva őket:

providers: 

az Angular dependency injection fejlettebb képességeket biztosít.

a gyári szolgáltatóval beállíthatja aInjector értéket egy adott függvény meghívásával. Nézzük meg ezt a példát.

providers: };

A provide tulajdonság konfigurálja a függőségi injekcióban használt tokent, a useFactory pedig arra a függvényre mutat, amely a kívánt értéket adja vissza. A deps tulajdonság konfigurálja azokat a tokeneket, amelyeket a gyári funkcióhoz továbbítanak.

mikor kell használni?

a gyári szolgáltató nagyon hasznos lehet, ha dinamikusan létre kell hoznia egy függő értéket, olyan információk alapján, amelyek a futási időig nem lesznek. Tájékozott döntést hozhat arról, hogy melyik értéket adja vissza más szolgáltatások és az alkalmazás állapota alapján.

példa:

próbáljuk kitalálni, hogy a felhasználó melyik mobileszközről van bejelentkezve. Megpróbálunk olyan információkat használni, mint a böngésző felhasználói ügynöke, a képernyő szélessége és a képernyő magassága. Határozzunk meg három tokent, amelyet később felhasználunk az eszköz nevének azonosítására.

a InjectionToken osztály — létrehoz egy tokent, amely felhasználható a Szögfüggőség-injekcióban. InjectionTokenparaméterezése aTaz objektum típusa, amelyet aInjector ad vissza. Ez további típusú biztonságot nyújt.

providers: providers: providers: 

most már előállhatunk egy algoritmussal az eszköz nevének kimutatására a fent meghatározott három token alapján. Átadunk egy nyíl funkciót a useFactory-nak, amely 3 függőséggel rendelkezik, annak érdekében, hogy megoldja ezeket a függőségeket, átadjuk a függőségi tömböt (dep) a felsorolt tokenekkel.

providers: 

végül felhasználjuk az eszköz nevét a szögletes komponensünkben.

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

az Inject paraméter dekorátor jelzi az Angular DI számára, hogy ezt a paramétert (deviceName) egy meghatározott token — DeviceName-ből kell feloldani.

Ez minden!

Kövess engem a Twitteren # LanoTechno

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.