Nie, nie można wprowadzić usługi do samego usługodawcy. Wstrzyknięcie usługi do metody $ get dostawcy jest takie samo jak wstrzyknięcie usługi do fabryki, ale nie można jej bezpośrednio wprowadzić do funkcji dostawcy.
Różnica między wartością $ get a samym dostawcą polega na tym, że dostawca działa podczas module loading phase, podczas gdy $ get uruchamia się podczas tworzenia usługi, którą udostępniasz.
Oznacza to, że nie można w ogóle korzystać z żadnej usługi podczas fazy ładowania modułów/konfiguracji modułów. To wszystko, czego używasz w swoich blokach konfiguracyjnych, na przykład podczas definiowania tras lub stanów aplikacji, nie może korzystać z żadnej usługi.
Jedyną inną rzeczą, którą można wprowadzić do bloków konfiguracji oprócz dostawców są stałe.
Możesz zrobić coś takiego, jak sugerował IgrCndd. Ale jeśli potrzebowałbyś skonsumować dostawcę w bloku konfiguracyjnym, co jest celem dostawcy, nie będziesz miał swoich wartości wstrzykniętych aż za dużo później. Więc nie zadziała, dopóki nie zrobisz jakiegoś paskudnego włamania za pomocą obietnic.
Further reading on injectables
Dzięki. Czy to znaczy, że nie możemy używać $ http (lub innych usług) poza $ get? – Chung
Nie, możesz użyć $ http wszędzie tam, gdzie można wstrzyknąć usługę. $ get to tylko jeden z nich. –
i jak zminimalizować akceptację? –