Sử dụng providers hoặc viewProviders để "cung cấp" dịch vụ cho các thành phần: dịch vụ
Tiêm vào constructor thành phần xác định các thông số các loại:
@Component({
// ...
providers: [TodoService]
})
class TodoComponent() {
constructor(todoService: TodoService) {
this.todoService = todoService;
}
}
hoặc sử dụng Inject
tham số trang trí.
@Component({
// ...
providers: [TodoService]
})
class TodoComponent() {
constructor(@Inject(TodoService) todoService) {
this.todoService = todoService;
}
}
Trình trang trí thông số không thuộc ES2016 (bạn có thể coi nó là kiểu cụ thể của TypeScript). Nhưng chúng có thể là added to the standard later).
Nếu bạn thực sự muốn sử dụng ES6/ES7, sử dụng getter tĩnh cho parameters
:
@Component({
// ...
providers: [TodoService]
})
class TodoComponent() {
static get parameters() {
return [[TodoService]]; // you can also return just [TodoService]
}
constructor(todoService) {
this.todoService = todoService;
}
}
Ngoài ra, tôi khuyên bạn nên đọc this article để hiểu rõ hơn angular2 Dependency Injection.
Vì vậy, cả hai triển khai đó đều là Loại cụ thể? Không có cách nào để sử dụng ES2016 trang trí (mà không bao gồm trang trí tham số, nhờ liên kết)? – iksose
@iksose Tôi đã thêm ví dụ cho ES6/ES7 – alexpods
Hoàn hảo! Hoạt động tuyệt vời, cảm ơn @alexpods – iksose