加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Angular2 DI与ES2016装饰器?

发布时间:2020-12-17 17:39:03 所属栏目:安全 来源:网络整理
导读:这是我最接近的 on github 我的服务是 @Injectable() 导出类TodoService {} 但我不确定如何使用ES2016装饰器将其注入我的组件.它甚至是可能的,还是装饰器特定于原型?我在TS中知道有一个emitDecoratorMetadata选项. 解决方法 使用 providers或 viewProviders
这是我最接近的 on github

我的服务是

@Injectable()
导出类TodoService {}

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

解决方法

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

@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依赖注入.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读