kun taas useimmat teistä todennäköisesti tuntevat perustavan tavan määrittää palveluntarjoaja yksinkertaisesti julistamalla ne:

providers: 

Angular dependence injection tarjoaa kehittyneempiä ominaisuuksia.

Factory providerilla voit määrittää Injector palauttamaan arvon vetoamalla tiettyyn funktioon. Katsotaanpa tätä esimerkkiä.

tarjottava ominaisuus määrittää tunnuksen, jota käytetään riippuvuussuihkutuksessa, ja useFactory osoittaa funktion, jota käytetään halutun arvon palauttamiseen. Deps-ominaisuus määrittää poletit, jotka siirretään tehdas-toimintoosi.

milloin sitä käytetään?

Factory provider voi olla erittäin kätevä, kun sinun täytyy luoda riippuvainen arvo dynaamisesti, joka perustuu tietoihin, joita sinulla ei ole ennen ajoaikaa. Voit tehdä tietoisen päätöksen siitä, minkä arvon palautat muiden palveluiden ja sovellustilanteen perusteella.

esimerkki:

yritetään arvata, mistä mobiililaitteesta käyttäjä on kirjautunut sisään. Pyrimme käyttämään tietoja, kuten selaimen käyttäjä-agentti, näytön leveys ja näytön korkeus. Määritellään kolme tokenia, joita käytetään myöhemmin laitteen nimen tunnistamiseen.

InjectionTokenLuokka — luo tunnuksen, jota voidaan käyttää Kulmariippuvuusinjektiossa. InjectionToken on parametrisoitu T, minkä tyyppinen kappale palaa Injector. Tämä lisää tyyppiturvallisuutta.

providers: providers: providers: 

nyt voimme keksiä algoritmin, jolla tunnistamme laitteen nimen edellä määrittämiemme kolmen Tokenin perusteella. Siirrämme nuolifunktion usefactoryyn, jossa on 3 riippuvuutta.näiden riippuvuuksien ratkaisemiseksi siirrämme riippuvuusrivistön (Dep), jossa on luetellut tokenit.

providers: 

lopuksi kulutamme laitteen nimen Kulmakomponenttiimme.

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

Pistosparametrin koristelija osoittaa Kulmadille, että tämä parametri (laitenimi) tulisi ratkaista määritellystä token — Laitenimestä.

siinä kaikki!

Seuraa minua Twitterissä #LanoTechno

Vastaa

Sähköpostiosoitettasi ei julkaista.