Usa providers o viewProviders a "fornire" il servizio al componente: Servizio
Iniettare nel costruttore componente specificando i tipi di parametri:
@Component({
// ...
providers: [TodoService]
})
class TodoComponent() {
constructor(todoService: TodoService) {
this.todoService = todoService;
}
}
o utilizzando Inject
parametro decoratore.
@Component({
// ...
providers: [TodoService]
})
class TodoComponent() {
constructor(@Inject(TodoService) todoService) {
this.todoService = todoService;
}
}
I decoratori di parametri non fanno parte di ES2016 (lo si può considerare specifico per TypeScript). Ma possono essere added to the standard later).
Se davvero si desidera utilizzare ES6/ES7, utilizzare getter statico per parameters
:
@Component({
// ...
providers: [TodoService]
})
class TodoComponent() {
static get parameters() {
return [[TodoService]]; // you can also return just [TodoService]
}
constructor(todoService) {
this.todoService = todoService;
}
}
Inoltre, vi consiglio di leggere per capire meglio this article angular2 Dependency Injection.
Quindi entrambe le implementazioni sono specifiche di Typescript? Non c'è modo di usare i decoratori ES2016 (che non include i decoratori di parametri, grazie per il collegamento)? – iksose
@iksose Ho aggiunto un esempio per ES6/ES7 – alexpods
Perfetto! Funziona meravigliosamente, grazie a @alexpods – iksose