当前位置: 首页 > 面试题库 >

如何在带有ES6的Angular类中注入$

束向荣
2023-03-14
问题内容

通过将Angular 1.4与ES6 / 7和Babel结合使用,我可以在类块之后使用以下代码将参数成功地注入到名为Controller的类中:

class Controller {
    constructor($scope, $state, $window) {...}
    ...
}
Controller.$inject = ["$scope", "$state", "$window"]

但是,在构造函数上方看到inject参数会更干净。我见过其他人使用静态$ inject,但出现错误。这是我正在尝试的:

class Controller {
    static $inject = ["$scope", "$state", "$window"]
    constructor($scope, $state, $window) {...}
    ...
}

为什么会导致此错误?它似乎为其他人工作。

Unexpected token (2:11)
  1 | class Controller {
  2 |     static $inject = ["$scope", "$state", "$window"]
    |  
              ^

问题答案:

那是实验性提议的语法。在Babel中,您必须启用es7.classProperties。通过

optional: ['es7.classProperties']

通天塔。确切的方法取决于您如何进行转译。

如果您想做标准的ES6,也可以做

static get $inject(){ return ["$scope", "$state", "$window"]; }


 类似资料:
  • 问题内容: 这是一个基本的TypeScript / ES.next示例,该示例使用装饰符进行DI并遵循框架手册建议的语法: 如何用ES5编写? 如何将同样的事情在做 untranspiled ES6 / ES2015? 在这种情况下,装饰器如何翻译? 该问题尤其适用于具有类但可以使用或代替ES6导入的具有类的真实ES6浏览器实现。 问题答案: 装饰器特定于Angular2的TypeScript风格

  • 我的角码出了什么问题?我得到以下错误: 无法读取BrowserDomAdapter.RemoveClass中未定义的属性“Remove”

  • Angular ES6 utility library. Write directives, controllers and services as ES6 classes. What you will get Write directives, controllers and services like an ES6 classes Autoload directives, controller

  • 我想在Angular CLI创建的Angular4项目中使用引导4和SASS。 我尤其需要: 使用SASS而不是CSS作为全局样式和组件样式 将Bootstrap SASS源代码与我的自定义*. scss样式一起编译 确保我的自定义样式覆盖了Bootstrap源,这样我就可以在需要时覆盖Bootstrap源,而无需编辑Bootstrap源本身(便于升级Bootstrap源版本) 添加手表

  • 我是Guice注入的新手。如何将类注入到将在静态方法中使用的静态变量中? 这是我想在 doLocalize() 方法中使用注入的变量 b 的类。 这是我想要对其执行guice注入的模块类。 注意:我不能改变我的模块和B类,因为它来自另一个依赖项。 我想在我的A类中注入的类

  • 我在一个带有Spring和Struts的Java项目中使用Mockito,在测试操作方面遇到了问题。 我没有使用Struts2 jUnit插件来节省使用这种方法进行测试的时间:Strut2.3.1.2Unit test,如何使用getContext()删除Spring依赖关系vs NPE。 问题是在我的操作中,当调用getText()时,我有一个NullPointerException。 我试图窥