Angular2 DI与ES2016装饰器?

前端之家收集整理的这篇文章主要介绍了Angular2 DI与ES2016装饰器?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这是我最接近的 on github

我的服务是

@Injectable()
导出类TodoService {}

但我不确定如何使用ES2016装饰器将其注入我的组件.它甚至是可能的,还是装饰器特定于原型?我在TS中知道有一个emitDecoratorMetadata选项.

解决方法

>使用 providersviewProviders为组件“提供”服务:
>将服务注入到指定参数类型的组件构造函数中:

@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,请使用静态getter参数:

@Component({
  // ...
  providers: [TodoService]
})
class TodoComponent() {

  static get parameters() {
    return [[TodoService]]; // you can also return just [TodoService]
  }

  constructor(todoService) {
    this.todoService = todoService;
  }
}

另外,我建议你阅读this article以更好地理解angular2依赖注入.

猜你在找的Angularjs相关文章