微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – Angular2如何管理依赖注入?

我理解为了向Angular2组件注入一个依赖项,我只是在它的构造函数中注释一个参数,就像这里的ThingService一样.我想了解的是Angular如何知道在运行时注入什么,据我所知,这只是TypeScript注释,在运行时没有任何意义.什么是低级别的内部机制来管理哪些提供程序放置在组件的构造函数中.如果你自己推出这个系统,它将如何工作.这是一种我不理解的打字机制吗?

@Component({
  selector: 'app-thing',
  templateUrl: './thing.component.html',
  styleUrls: ['./thing.component.scss']
})
export class ThingComponent {

  constructor(
    private thingService: ThingService) {
  }
}

解决方法:

引擎盖下发生的事情是TypeScript在生成的ES5代码中保留元数据.因此,构造函数中的注释实际上并没有消失,它在运行时可用,然后Angular的DI可以从那里获取它.

如果满足以下要求,TypeScript始终会保留该元数据:

>两个编译器选项属性 – emitDecoratorMetadata和experimentalDecorators – 都需要设置为true
>类上必须至少有一个装饰器(这就是为什么有些服务类使用@Injectable()装饰器,否则将不会发出其依赖关系的元数据)

我写了一篇关于该主题here的深入文章

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐