From 6b564ecda5f9cf1934bf9cfef44f80eb76b9547c Mon Sep 17 00:00:00 2001 From: Igor Minar Date: Wed, 3 Aug 2016 17:42:32 -0700 Subject: [PATCH] feat(ngUpgrade): add support for NgModules BREAKING CHANGE: UpgradeAdapter.addProvider are now deprecated in favor of passing in an NgModule into the adapter's constructor Before: ``` let upgradeAdapter = new UpgradeAdapter(); upgradeAdapter.addProviders([myProvidersArray); ``` After: ``` @NgModule({ providers: myProvidersArray }) class MyModule {} let upgradeAdapter = new UpgradeAdapter(MyModule); ``` --- modules/@angular/upgrade/src/upgrade_adapter.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/modules/@angular/upgrade/src/upgrade_adapter.ts b/modules/@angular/upgrade/src/upgrade_adapter.ts index e80924bc21..d8f2619156 100644 --- a/modules/@angular/upgrade/src/upgrade_adapter.ts +++ b/modules/@angular/upgrade/src/upgrade_adapter.ts @@ -100,6 +100,10 @@ export class UpgradeAdapter { /* @internal */ private providers: Array = []; + // the ng2AppModule param should be required once the deprecated @Component.directives prop is + // removed + constructor(private ng2AppModule?: Type) {} + /** * Allows Angular v2 Component to be used from AngularJS v1. * @@ -289,7 +293,7 @@ export class UpgradeAdapter { ngDoBootstrap() {} } - platformRef.bootstrapModule(DynamicModule).then((moduleRef) => { + platformRef.bootstrapModule(this.ng2AppModule || DynamicModule).then((moduleRef) => { ng1Injector = this._afterNg2ModuleBootstrap(moduleRef, upgrade, element, modules, config); }); return upgrade; @@ -443,6 +447,9 @@ export class UpgradeAdapter { * document.body.innerHTML = '' * adapter.bootstrap(document.body, ['myExample']); *``` + * + * @deprecated Use NgModules and `new UpgradeAdapter(ng2AppModule)` to configure top-level + *providers */ public addProvider(provider: Type|Provider|any[]|any): void { this.providers.push(provider); }