在Angular + Typescript中我可以注入服务并在构造函数中提供参数

时间:2015-09-01 08:07:46

标签: angularjs typescript

如果我有这样的服务注入:

export class MyService {
    private fooService: IFooService;
    public static $inject  = [ "fooService" ];

    constructor(fooService: FooService) {
        this.fooService = fooService;
    }
}

但我想在其构造函数中给fooService一个参数,我也可以吗?

1 个答案:

答案 0 :(得分:3)

如果您想在运行/配置阶段计算某些内容或提供参数,请使用提供商

class MyServiceProvider implements ng.IServiceProvider {
  private customParameter;

  public setCustomParameter(val) {
    this.customParameter = val;
  }

  public $get():Function {
    return () => {
      return new MyService(this.customParameter);
    };
  }
}

您现在可以在配置阶段注入MyServiceProvider并调用setCustomParameter。

如果您知道参数是什么,您可以使用常规注入,只需定义一个角度变量,如下所示:

angular.constant(CONSTANT_NAME, 'CONSTANT_VALUE');
export class fooService {
    public static $inject  = [ "CONSTANT_NAME" ];
    constructor(CONSTANT_NAME) {
    }
}