Czy jest możliwe wykonanie usługi w kancie 2?Podczas uruchamiania? bootstrap nie wykonuje kontruktora usługi. A także, wtryskiwacz wykonuje kontruktora usługi za każdym razem, gdy jest wstrzyknięcie usługi w jakimś komponencie. Czy istnieje sposób na wykonanie usługi singlet i upewnienie się, że ctor uruchomi się tylko raz?
Odpowiedzi:
2 dla odpowiedzi № 1Dodaj usługę tylko do bootstrapu, a nie do prozaików w swoich komponentach. Jeśli wstrzykniesz go do AppComponent, zostanie on utworzony i tylko raz.
Dodanie usługi do dostawców w komponencie tworzy nową instancję dla każdej instancji komponentu.
1 dla odpowiedzi nr 2
Bootstrap nie rozpocznie korzystania z usługi, klasa konsumująca, która wstrzykuje usługę, a wpisując ją w bootstrapie otrzymasz singleton.
Jeśli zastosujesz konwencję wymieniania twoich usług wstrzykiwania (LogRepository) na bootstrap, wtedy wszystkie usługi będą pojedynczo. (Jak w LogRepository)
bootstrap(TheApp, [HTTP_PROVIDERS,LogRepository]);
Możesz uzyskać więcej instancji usług wstrzykiwalnych, jeśli umieścisz je jako dostawców na komponencie, ale zaczynasz, po prostu wypisz je w bootstrap (). Następnie wszystkie singletony.