Javascript Angular2是可注射的,创建实例还是相同的?

Javascript Angular2是可注射的,创建实例还是相同的?,javascript,angular,typescript,angular2-directives,Javascript,Angular,Typescript,Angular2 Directives,我不熟悉es6、打字脚本和Angular2之类的东西,我已经试过了。看起来是这样的 import { Directive, ElementRef, Input, Renderer } from '@angular/core'; @Directive({ selector: '[myHighlight]' }) export class HighlightDirective { constructor(el: ElementRef, renderer: Renderer) {

我不熟悉es6、打字脚本和Angular2之类的东西,我已经试过了。看起来是这样的

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

@Directive({ selector: '[myHighlight]' })

export class HighlightDirective {
    constructor(el: ElementRef, renderer: Renderer) {
       renderer.setElementStyle(el.nativeElement, 'backgroundColor', 'green');
    }
}
我尝试了以下变体,但没有如我预期的那样起作用

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

@Directive({ selector: '[myHighlight]' })

export class HighlightDirective {
    constructor() {

    console.log(new ElementRef())
       //renderer.setElementStyle(el.nativeElement, 'backgroundColor', 'green');
    }
}
我也试过这个

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

@Directive({ selector: '[myHighlight]' })

export class HighlightDirective {
    constructor(ElementRef, Renderer) {

    console.log(new ElementRef())
       //renderer.setElementStyle(el.nativeElement, 'backgroundColor', 'green');
    }
}

我没有发现el:ElementRef语法与使用newelementrref创建普通对象实例之间的区别。。请解释它们之间的区别和逻辑,以及正常或es6 js中的el:ElementRef关系和等效关系。。提前感谢:)

这是angular 2依赖注入(DI)机制的基本基石。简而言之:如果您需要在组件中引用某些服务等,您可以通过
构造函数
询问Angular。使用line
constructor(el:ElementRef,renderer:renderer)
你基本上是在问框架:“当你要为我构造highlight指令时,给我这两个对象,
ElementRef
renderer
。没有它们,我作为highlight指令无法生存。”

这两个物体是如何获得的?在指令生命周期内通过DI框架。为了更好地理解,我强烈建议阅读这篇精彩的文章(这是必须的):

在第二个和第三个示例中(您的
构造函数
为空,因此在创建时不会向指令中注入任何内容),您不能通过new()简单地创建
ElementRef
,因为它需要更多依赖项,例如
nativeElement
,如下所述:
但是您没有提供这些,而且根本无法提供。

这是angular 2依赖项注入(DI)机制的基本基石。简而言之:如果您需要在组件中引用某些服务等,您可以通过
构造函数
询问Angular。使用line
constructor(el:ElementRef,renderer:renderer)
你基本上是在问框架:“当你要为我构造highlight指令时,给我这两个对象,
ElementRef
renderer
。没有它们,我作为highlight指令无法生存。”

这两个物体是如何获得的?在指令生命周期内通过DI框架。为了更好地理解,我强烈建议阅读这篇精彩的文章(这是必须的):

在第二个和第三个示例中(您的
构造函数
为空,因此在创建时不会向指令中注入任何内容),您不能通过new()简单地创建
ElementRef
,因为它需要更多依赖项,例如
nativeElement
,如下所述:
但是您没有提供这些,而且根本无法提供。

您是否已将模板文件包含在app.component.ts中,或者您是否忘记将其导入到app.module声明中?朋友,我已包含。。这不是问题。。第一个代码示例正在工作,但为什么第二个和第三个代码示例的工作方式不同。。这些代码示例之间的区别是什么。。在第一个代码示例中(el:ElementRef,renderer:renderer)这一行到底在做什么?您是否已将模板文件包含在app.component.ts中,或者您是否忘记将其导入到app.module声明中?朋友,我已包含。。这不是问题。。第一个代码示例正在工作,但为什么第二个和第三个代码示例的工作方式不同。。这些代码示例之间的区别是什么。。在第一个代码示例中(el:ElementRef,renderer:renderer)这一行到底在做什么?