iniettabili Registra
prestatori mettano iniettabili noti DI di angolare e definiscono l'ambito di un iniettabile (servizio).
Gerarchia di iniettori
DI di angolare crea un albero di iniettori (genitore> bambino> nipotino> ...) che ricorda la struttura dei componenti e delle direttive.
istanza singola per fornitore
Provider sono mantenute per iniettore. Ogni fornitore fornisce una singola istanza di un iniettabile.
ricerca Provider
Quando un componente o di direttiva ha una dipendenza (parametro del costruttore), DI inizia a cercare su iniettore di questa componente per i fornitori. Se ne ha uno, richiede l'istanza da questo provider e la inietta.
Se l'iniettore non dispone di un provider per la chiave richiesta (tipo), l'iniettore principale viene visitato fino alla radice (bootstrap) finché non viene trovato un provider e la sua istanza può essere iniettata. (Se non viene trovato nessun provider, DI genera un errore).
definire la portata di un'istanza iniettabile
In questo modo è possibile definire l'ambito di un servizio condiviso, perché DI inizia a cercare dal componente in cui viene richiesta un'istanza verso l'alto fino a trovarne uno.
Singleton o no
Quanti posti si fornisce un iniettabile determina come verranno creati molti casi (sono istanziati solo se effettivamente richiesto).
Se si desidera una singola istanza per tutta l'applicazione, quindi fornire un iniettabile solo volta alla componente principale (o con bootstrap(AppComponent, [...])
che provoca lo stesso comportamento.
Se si desidera una nuova istanza per ciascun componente A
, quindi aggiungerla ai provider del componente A
.
(update) NgModule pigro e non differita
Con l'introduzione di NgModule
moduli, sono stati introdotti livelli aggiuntivi. I provider registrati con moduli non pigri sono sopra il componente root nella gerarchia.
I moduli con carico lento sono sopra i componenti e le direttive caricati da questi componenti.
Poiché i provider sono di sola lettura dopo la creazione di un iniettore, non è possibile aggiungere provider dall'appliance root ai moduli caricati in modo lento. Pertanto, i moduli lazy caricati ottengono il proprio ambito di root.
Vedi anche https://stackoverflow.com/a/45231440/217408
Come sempre @ Günter Zöchbauer L'hai chiarito per me. Grazie. Seguo sempre le tue risposte alle domande angolari di js. – anz
Prego. Felice di sentire :) –