【问题标题】:How Angular2 inject variable inside directive constructorAngular2如何在指令构造函数中注入变量
【发布时间】:2017-03-02 07:26:58
【问题描述】:

我是 Angular2 的新手用户。
我在文档中看到了这些代码

@Directive({ selector: '[myHighlight]' })
export class HighlightDirective {
    constructor(el: ElementRef, renderer: Renderer) {
       renderer.setElementStyle(el.nativeElement, 'backgroundColor', 'yellow');
    }
} 

我知道如何使用 Directive、 ElementRef 和 Renderer。
我的问题是 angular2 如何在构造方法中注入这些变量?
为什么我可以在类构建后使用this.el? 这些场景背后的机制或设计模式是什么?
根据我的一点编码经验,如果有人要求我实现这个机制,我不知道该怎么做。

感谢您的耐心等待。

  • 母语不是英语,抱歉英语不好。

【问题讨论】:

  • 你在为 Angular 2 使用 TypeScript 吗?
  • 是的,我正在使用 TS

标签: angular


【解决方案1】:

它叫做Dependency Injection。 见官方文档:https://angular.io/docs/ts/latest/guide/dependency-injection.html

这是自动完成的,您不必关心! Angular2 只需要知道您尝试在 constructor 中实例化的那些类型。

您甚至可以创建自己的 Service 并使用该装饰器将其“标记”为 @Injectable()

请参阅有关创建自定义服务的文档:https://angular.io/docs/ts/latest/tutorial/toh-pt4.html

【讨论】:

    【解决方案2】:

    你的这个:

     constructor(private el: ElementRef, private renderer: Renderer) {}
    

    确保您导入了所有必要的东西:

    import {Directive, Inject, ElementRef, Renderer} from '@angular/core'
    

    【讨论】:

    • 感谢您的回答。但是,我了解如何使用它并且代码正在运行。我的问题是:如果我需要实现这种注入机制,我怎么能从纯 JS(或 TS)做我为什么只能声明变量和类型,然后我可以使用它们。我无法弄清楚Angular2内部机制如何。对不起,误导性问题
    猜你喜欢
    • 2016-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多