Aurelia是否支持将多个成员注入阵列

时间:2017-10-30 07:32:29

标签: javascript dependency-injection aurelia

Aurelia(确切地说是aurelia-dependency-injection)是否支持将多个成员注入数组(如multi inject feature of InversifyJS)?

示例:

提供商-common.ts:

class A { ... }

provider1.ts

let a1 = new A (...)
container.registerInstance(A, a1)

provider2.ts

let a2 = new A (...)
container.registerInstance(A, a2)

consumer.ts

@inject(A)
class B {
  constructor (multipleAInstancesFromDiffirentProviders :Array<A>) {
      // I would expect multipleAInstancesFromDiffirentProviders to contain [a1,a2] (if such a feature is supported)
  }
}

2 个答案:

答案 0 :(得分:2)

您可以尝试使用All.of(A)

    import {inject, All} from "aurelia-framework";

    @inject(All.of(A))
    class B {
        constructor (multipleAInstancesFromDiffirentProviders :Array<A>) {
        }
    }

答案 1 :(得分:1)

最好的方法是使用All.of(A)

您也可以使用此选项:

import { Container } from 'aurelia-framework';

@inject(Container)
class B {
    constructor (container: Container) {
      var multipleAInstancesFromDifferentProviders : Array<A> = container.getAll(A);
    }
}