Como declaro uma classe de modelo no meu componente Angular 2 usando o TypeScript?
Eu sou novo no Angular 2 e TypeScript e estou tentando seguir as práticas recomendadas.
Em vez de usar um modelo JavaScript simples ({}), estou tentando criar uma classe TypeScript.
No entanto, o Angular 2 não parece gostar.
Meu código é:
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;
}
e eu estou usando-o como:
import { testWidget} from "lib/testWidget";
@Component({
selector: "myComponent",
template: "<testWidget></testWidget>",
directives: [testWidget]
})
Estou recebendo um erro do Angular:
EXCEÇÃO: Não é possível resolver todos os parâmetros para testWidget: (?).
Então pensei: Modelo ainda não está definido ... Vou movê-lo para o topo!
Exceto agora, recebo a exceção:
EXCEÇÃO ORIGINAL: Nenhum fornecedor para Model!
Como faço isso?
Edit: Obrigado a todos pela resposta. Isso me levou ao caminho certo.
Para injetar isso no construtor, preciso adicioná-lo aos provedores no componente.
Isso parece funcionar:
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) {}
}