diff --git a/modules/angular2/src/core/di/provider.ts b/modules/angular2/src/core/di/provider.ts index c9d080214e..45274025e0 100644 --- a/modules/angular2/src/core/di/provider.ts +++ b/modules/angular2/src/core/di/provider.ts @@ -642,7 +642,13 @@ function _extractToken(typeOrFunc, metadata /*any[] | any*/, params: any[][]): D var optional = false; if (!isArray(metadata)) { - return _createDependency(metadata, optional, null, null, depProps); + if (metadata instanceof InjectMetadata) { + var metaArrayWrapper = ListWrapper.createFixedSize(1); + metaArrayWrapper[0] = metadata; + metadata = metaArrayWrapper; + } else { + return _createDependency(metadata, optional, null, null, depProps); + } } var lowerBoundVisibility = null; diff --git a/modules/angular2/test/core/di/injector_spec.ts b/modules/angular2/test/core/di/injector_spec.ts index f4699d931f..1579f72209 100644 --- a/modules/angular2/test/core/di/injector_spec.ts +++ b/modules/angular2/test/core/di/injector_spec.ts @@ -648,6 +648,15 @@ export function main() { }); }); + it('should allow declaring dependencies with flat arrays', () => { + var resolved = + Injector.resolve([bind('token').toFactory(e => e, [new InjectMetadata("dep")])]); + var nestedResolved = + Injector.resolve([bind('token').toFactory(e => e, [[new InjectMetadata("dep")]])]); + expect(resolved[0].resolvedFactories[0].dependencies[0].key.token) + .toEqual(nestedResolved[0].resolvedFactories[0].dependencies[0].key.token); + }); + describe("displayName", () => { it("should work", () => { expect(Injector.resolveAndCreate([Engine, BrokenEngine]).displayName)