Was bedeutet deklarieren eine Variable als Konstruktor Eingang
Constructor-Parameter sind wie Verfahren oder Funktionsparameter, die Parameter
let page = new MyPage(aLoadingController)
außer passieren lässt, dass Sie dies nicht tun Erstellen Sie MyPage
Instanzen selbst, aber Angular2's Dependency Injection (DI) macht es für Sie.
DI sucht seine Registrierung, wenn es einen Anbieter findet, der dem Parametertyp (oder @Inject(xxx)
) Annotation entspricht, wenn vorhanden) und dann eine von einem gefundenen Provider erstellte Instanz an den new MyPage(...)
-Aufruf übergibt.
Dazu Angular2 braucht ein Dekorateur wie @Page()
, @Component()
, @Directive()
, @Pipe()
, @Injectable()
auf die Klasse zu arbeiten. Wenn es einen solchen Dekorator findet, analysiert es die Konstruktorparameterliste, um zu wissen, was zu injizieren ist.
Wenn public
oder private
an den Konstruktor Parameter vorangestellt ist, dann ist auch eine Instanz Ebene Eigenschaft wird erstellt und der übergebene Wert dieser Eigenschaft wird automatisch vergeben (reine Typoskript Feature)
Danke! Es scheint also, dass Angular2 im Hintergrund viele Dinge tut, als suche man nach dem Provider. –
DI ist der Angular-Teil, der dies tut, der Rest ist DOM-Rendering und Change-Erkennung und andere Sachen –