Rejestracja zastrzyki
Dostawcy aby zastrzyki znane kątowym za DI oraz określenie zakresu iniekcyjnego (usług).
Hierarchia wtryskiwacze
kątowej za DI tworzy drzewo wtryskiwaczy (rodzic> dziecko> wnuczek> ...), który przypomina strukturę komponentów i dyrektyw.
jednej instancji za dostawcę
Pośrednicy są utrzymywane za wtryskiwacza. Każdy dostawca zapewnia pojedyncze wystąpienie iniekcji.
odnośnika Provider
Kiedy składnik lub dyrektywa ma zależność (parametr konstruktora), DI zaczyna patrząc na wtryskiwacza tego komponentu dla dostawców. Jeśli ma taki, żąda instancji od tego dostawcy i wstrzykuje go.
Jeśli iniektor nie ma dostawcy dla żądanego klucza (typu), wówczas wtryskiwacz macierzysty jest odwiedzany, aż do root (bootstrap), dopóki nie zostanie znaleziony dostawca i jego instancja może zostać wstrzyknięta. (Jeśli nie znaleziono dostawcy, DI zgłasza błąd).
Zdefiniuj zakres wstrzykiwania przykład
W ten sposób można określić zakres wspólnej służby, ponieważ DI zaczyna patrząc z komponentu gdzie instancją jest wymaganym do góry, aż znajdzie.
Singleton lub nie
Ile miejsc podać wstrzykiwania określa, jak wiele przypadków, zostanie utworzony (są one tworzone wystąpienia tylko wtedy, gdy faktycznie wymagane).
Jeśli chcesz jedno wystąpienie dla całej aplikacji, a następnie dostarczyć do wstrzykiwania tylko raz w składniku głównym (lub z bootstrap(AppComponent, [...])
co skutkuje tym samym zachowanie.
Jeśli chcesz nowe wystąpienie dla każdego komponentu A
, dodaj go do dostawców komponentu A
.
(zmiana) NgModule lazy i nie-lazy
Dzięki wprowadzeniu NgModule
moduły dodatkowe poziomy zostały wprowadzone. Dostawcy zarejestrowani w modułach nieobciążonych ładowaniem znajdują się powyżej głównego komponentu w hierarchii.
Sztuczna załadowane moduły są powyżej elementów i wytycznymi załadowanych przez te komponenty.
Ponieważ operatorzy są tylko do odczytu po utworzeniu wtryskiwacz, nie ma sposobu, aby dodać dostawców z leniwych modułów załadowanych do wtryskiwacza głównego. Dlatego też moduły z opóźnionym ładowaniem mają swój własny zakres główny.
Zobacz także https://stackoverflow.com/a/45231440/217408
Jak zawsze @ Günter Zöchbauer Wyjaśniłeś to dla mnie. Dziękuję Ci. Zawsze podążam za twoimi odpowiedziami na pytania kątowe. – anz
Nie ma za co. Dobrze słyszeć :) –