Tôi mới sử dụng Angular 2 và TypeScript và tôi đang cố gắng làm theo các phương pháp hay nhất.
Thay vì sử dụng một mô hình JavaScript đơn giản ({}), tôi đang cố gắng tạo một lớp TypeScript.
Tuy nhiên, Angular 2 có vẻ không thích điều đó.
Mã của tôi là:
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;
}
và tôi đang sử dụng nó như:
import { testWidget} from "lib/testWidget";
@Component({
selector: "myComponent",
template: "<testWidget></testWidget>",
directives: [testWidget]
})
Tôi gặp lỗi từ Angular:
NGOẠI LỆ: Không thể giải quyết tất cả các tham số cho testWidget: (?).
Vì vậy, tôi nghĩ, Mô hình vẫn chưa được xác định ... Tôi sẽ chuyển nó lên đầu!
Ngoại trừ bây giờ tôi nhận được ngoại lệ:
NGOẠI LỆ GỐC: Không có nhà cung cấp cho Model!
Làm thế nào để tôi hoàn thành điều này ??
Chỉnh sửa: Cảm ơn tất cả cho câu trả lời. Nó đã dẫn tôi đến con đường đúng đắn.
Để đưa nó vào hàm tạo, tôi cần thêm nó vào các nhà cung cấp trên thành phần.
Điều này dường như hoạt động:
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) {}
}