javascript - 在 Angular 中使用 `useFactory` 和 `deps:[ ]` 的正确方法是什么?

标签 javascript angular

我想使用一个带有 useFactory 的简单提供程序,它也将使用 deps (学习目的)。

所以我创建了这个 plnkr :

//app.module.ts
...
const randomFactory = (car,engine) => { return new Calc(car,engine);  };
 ...
 providers: [Car,Engine, 
             { provide: 'Random', 
               useFactory: randomFactory ,  
               deps: [Car, Engine],
             },
            ]

其中 Calc 是:

export class Calc
{
  car:Car;
  engine:Engine;

  constructor ( Engine engine, Car car)
   {
    this.car=car;
    this.engine=engine;
   }
  doSomething(){alert(this.car.getInfo() + this.engine.getInfo()}
}

现在我想将它用作注入(inject)对象,所以我这样做了:

export class AppComponent {
  constructor(@Inject('Random') r) {
    r.doSomething(); //should alert "car data + engine data" , but I get an error.
   }
}

但我收到错误:汽车未定义

问题:

如果我已经在主应用程序模块中声明了该模块(因此它在全局应用程序中是已知的)并且在我导入这些类的 Calc 类。

那么如何修复我的代码以正确使用 deps:[]

plnkr

最佳答案

提供商配置正确。 Calc 构造函数中存在语法错误。正确的参数声明如下:

constructor (engine: Engine, car: Car){

这是更新后的插件:

https://plnkr.co/edit/HsECR0HEcIaPNbK6A7ZZ?p=preview

关于javascript - 在 Angular 中使用 `useFactory` 和 `deps:[ ]` 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43651645/

相关文章:

javascript - 为什么我的组件的这一部分会在间隔调用时重新渲染?

javascript - 如何使用 ES6 Javascript 类验证和显示表单数据

javascript - 代码点火器 : echo folder path using php in javascript file

javascript - 如何将变量从javascript函数返回到html主体中

javascript - 如何在每次 ng 服务构建后链接 npm 脚本调用?

不同固定大小项目的 Angular 虚拟滚动策略

angular - 在加载完成之前从 HTML 中获取一个参数

javascript - 打包 Javascripts - 值得吗?

angular - SimpleMDE 与 Angular 6 获取组件中编辑器的引用

angular - 如何将参数传递给 HttpInterceptor?