Я не новачок у Angular 2 та TypeScript, і я намагаюся дотримуватися найкращих практик.
Замість того, щоб використовувати просту модель JavaScript ({}), я намагаюся створити клас TypeScript.
Однак, Angular 2, схоже, не подобається.
Мій код:
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;
}
і я використовую його як:
import { testWidget} from "lib/testWidget";
@Component({
selector: "myComponent",
template: "<testWidget></testWidget>",
directives: [testWidget]
})
Я отримую повідомлення про помилку від Angular:
ВИНЯТК: Не вдається вирішити всі параметри для testWidget: (?).
Тож я подумав, Модель ще не визначена ... Я перенесу її на початок!
Крім тепер я отримую виняток:
ОРИГІНАЛЬНИЙ ВИНЯТК: Немає постачальника моделі!
Як мені це досягти ??
Редагувати: Дякуємо усім за відповідь. Це вивело мене на правильний шлях.
Для того, щоб внести це в конструктор, мені потрібно додати його до постачальників компонента.
Здається, це працює:
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) {}
}