Wie deklariere ich eine Modellklasse in meiner Angular 2-Komponente mit TypeScript?

Ich bin neu in Angular 2 und TypeScript und versuche, Best Practices zu befolgen.

Anstatt ein einfaches JavaScript-Modell ({}) zu verwenden, versuche ich, eine TypeScript-Klasse zu erstellen.

Angular 2 scheint es jedoch nicht zu mögen.

Mein Code ist:

import { Component, Input } from "@angular/core";

@Component({
    selector: "testWidget",
    template: "<div>This is a test and {{model.param1}} is my param.</div>"
})

export class testWidget {
    constructor(private model: Model) {}
}

class Model {
    param1: string;
}

und ich benutze es als:

import { testWidget} from "lib/testWidget";

@Component({
    selector: "myComponent",
    template: "<testWidget></testWidget>",
    directives: [testWidget]
})

Ich erhalte eine Fehlermeldung von Angular:

EXCEPTION: Es können nicht alle Parameter für testWidget: (?) Aufgelöst werden.

So dachte ich, Model ist noch nicht definiert ... Ich verschiebe es nach oben!

Except jetzt bekomme ich die Ausnahme:

ORIGINAL AUSNAHME: Kein Anbieter für Model!

Wie mache ich das ??

Edit: Danke an alle für die Antwort. Es führte mich auf den richtigen Weg.

Um dies in den Konstruktor einzufügen, muss ich es den Providern auf der Komponente hinzufügen.

Dies scheint zu funktionieren:

import { Component, Input } from "@angular/core";

class Model {
    param1: string;
}

@Component({
    selector: "testWidget",
    template: "<div>This is a test and {{model.param1}} is my param.</div>",
    providers: [Model]
})

export class testWidget {
    constructor(private model: Model) {}
}

Antworten auf die Frage(12)

Ihre Antwort auf die Frage