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的深入文章

相关文章

ANGULAR.JS:NG-SELECTANDNG-OPTIONSPS:其实看英文文档比看中...
AngularJS中使用Chart.js制折线图与饼图实例  Chart.js 是...
IE浏览器兼容性后续前言 继续尝试解决IE浏览器兼容性问题,...
Angular实现下拉菜单多选写这篇文章时,引用文章地址如下:h...
在AngularJS应用中集成科大讯飞语音输入功能前言 根据项目...
Angular数据更新不及时问题探讨前言 在修复控制角标正确变...