Czy Angular wstrzyknie więcej niż jedną instancję ogólnej usługi, jeśli jest ona wywoływana przez konstruktorów komponentów przy użyciu różnych typów?Wstrzyknięcie generycznych usług w Angular
Mam wiele usług, które będą zapewniać taką samą funkcjonalność dla różnych klas, które wszystkie dziedziczą z tej samej klasy bazowej. Chciałbym użyć ogólnego wzorca Typescript, aby poradzić sobie z tym.
Ale ja nie wiem, jak to jives z kątowym za wtryskiwacza:
- Czy kątowa wtryskiwacz tworzyć więcej niż jednej instancji tej usługi, jeśli jest wstrzykiwany do różnych elementów z różnych rodzajów?
- Czy wtryskiwacz wstrzyknie to samo wystąpienie, jeśli zostanie wywołany z tego samego typu?
Kod:
@Injectable
export class MyService<T> {
...
}
@Component
export class ComponentA {
constructor(alphaService MyService<Alpha>) {} <--Instance 1
}
@Component
export class ComponentB {
constructor(betaService MyService<Beta>) {} <----Instance 2?
}
@Component
export class ComponentA1 {
constructor(alphaService MyService<Alpha>) {} <---Instance 1?
}
Czy to legalne? Czy wtryskiwacz wie, że tworzy dwa wystąpienia MyService?
Uwaga: 'OpaqueToken' jest przestarzałe. Zamiast tego użyj [** 'InjectionToken' **] (https://angular.io/docs/ts/latest/api/core/index/InjectionToken-class.html). – developer033
Jak więc wstrzyknąć obiekt 'HttpClient' (lub' HttpModule') dla konstruktora takiego jak ten 'konstruktor (prywatny http: HttpClient)' – Bellash