medan de flesta av er troligen är bekanta med det grundläggande sättet att konfigurera en leverantör genom att helt enkelt förklara dem:

providers: 

Angular dependency injection ger mer avancerade funktioner.

med Factory provider kan du konfigurera Injector för att returnera ett värde genom att anropa en specifik funktion. Låt oss titta på det här exemplet.

providers: };

egenskapen provide konfigurerar token som kommer att användas i beroendeinjektion och useFactory pekar på funktionen som kommer att användas för att returnera önskat värde. Egenskapen deps konfigurerar de tokens som kommer att skickas till din fabriksfunktion.

När ska man använda den?

Factory provider kan vara mycket praktiskt när du behöver skapa ett beroende värde dynamiskt, baserat på information som du inte har förrän körtid. Du kan fatta ett välgrundat beslut om vilket värde som ska returneras baserat på andra tjänster och applikationstillstånd.

exempel:

låt oss försöka gissa vilken mobilenhet en användare är inloggad från. Vi kommer att försöka använda information som webbläsarens användaragent, skärmbredd och skärmhöjd. Låt oss definiera tre token som kommer att användas senare för att identifiera enhetsnamnet.

InjectionTokenklass — skapar en token som kan användas i Vinkelberoende injektion. InjectionToken är parametriserad på T vilket är den typ av objekt som kommer att returneras av Injector. Detta ger en extra nivå av typsäkerhet.

providers: providers: providers: 

Nu kan vi komma med en algoritm för att upptäcka enhetsnamnet baserat på de tre tokens som vi definierade ovan. Vi skickar en pilfunktion till useFactory som har 3 beroenden, för att lösa dessa beroenden passerar vi i en dependency array (dep) med de listade tokens.

providers: 

slutligen kommer vi att konsumera enhetsnamnet i vår Vinkelkomponent.

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

Inject parameter decorator indikerar för Angular DI att denna parameter (deviceName) ska lösas från ett definierat token — DeviceName.

det är allt!

Följ mig på Twitter # LanoTechno

Lämna ett svar

Din e-postadress kommer inte publiceras.