Использование providers или viewProviders "предоставлять" услуги по компоненте:
Inject служба в компонент конструктора определение типов параметров:
@Component({
// ...
providers: [TodoService]
})
class TodoComponent() {
constructor(todoService: TodoService) {
this.todoService = todoService;
}
}
или с помощью Inject
параметра декоратора.
@Component({
// ...
providers: [TodoService]
})
class TodoComponent() {
constructor(@Inject(TodoService) todoService) {
this.todoService = todoService;
}
}
Декораторы параметров не являются частью ES2016 (вы можете рассматривать его как специфический для TypeScript). Но они могут быть added to the standard later).
Если вы действительно хотите использовать ES6/ES7, использовать статический поглотитель для parameters
:
@Component({
// ...
providers: [TodoService]
})
class TodoComponent() {
static get parameters() {
return [[TodoService]]; // you can also return just [TodoService]
}
constructor(todoService) {
this.todoService = todoService;
}
}
Кроме того, я рекомендую вам прочитать this article, чтобы лучше понять angular2 Dependency Injection.
Итак, обе эти реализации специфичны для машинописного текста? Невозможно использовать декораторы ES2016 (которые не включают декораторы параметров, спасибо за ссылку)? – iksose
@iksose Я добавил пример для ES6/ES7 – alexpods
Отлично! Работает чудесно, спасибо @alexpods – iksose