2016-09-18 1 views
2

Ich bin neu bei Ionic2 und Angular. Was macht eine Variable als Konstruktoreingabe in der Klasse?Was tun die Klassenkonstruktoreingaben in TypeScript Ionic 2?

import { LoadingController } from 'ionic-angular'; 

export class MyPage { 
    constructor(public loadingCtrl: LoadingController <-----) { 
    } 

    presentLoading() { 
    let loader = this.loadingCtrl.create({ 
     content: "Please wait...", 
     duration: 3000 
    }); 
    loader.present(); 
    } 
} 

Antwort

3

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)

  • Ich weiß nicht, Ionic und wenn es einige besondere Dinge zu beachten gibt.

+0

Danke! Es scheint also, dass Angular2 im Hintergrund viele Dinge tut, als suche man nach dem Provider. –

+0

DI ist der Angular-Teil, der dies tut, der Rest ist DOM-Rendering und Change-Erkennung und andere Sachen –