iks*_*ose 5 ecmascript-7 angular
这是我在github上最接近的
我的服务是
@Injectable()
export class TodoService {}
但我不确定如何使用ES2016装饰器将其注入我的组件.它甚至是可能的,还是装饰器特定于原型?我知道TS有一个emitDecoratorMetadata选择.
使用provider或viewProviders为组件"提供"服务:
将服务注入指定参数类型的组件构造函数:
@Component({
// ...
providers: [TodoService]
})
class TodoComponent() {
constructor(todoService: TodoService) {
this.todoService = todoService;
}
}
Run Code Online (Sandbox Code Playgroud)
或使用Inject参数装饰器.
@Component({
// ...
providers: [TodoService]
})
class TodoComponent() {
constructor(@Inject(TodoService) todoService) {
this.todoService = todoService;
}
}
Run Code Online (Sandbox Code Playgroud)
参数装饰器不是ES2016的一部分(您可以将其视为特定于TypeScript).但它们可以在以后添加到标准中).
如果您真的想使用ES6/ES7,请使用静态getter parameters:
@Component({
// ...
providers: [TodoService]
})
class TodoComponent() {
static get parameters() {
return [[TodoService]]; // you can also return just [TodoService]
}
constructor(todoService) {
this.todoService = todoService;
}
}
Run Code Online (Sandbox Code Playgroud)
另外,我建议您阅读本文以更好地理解angular2依赖注入.
| 归档时间: |
|
| 查看次数: |
261 次 |
| 最近记录: |