fix(upgrade): don't rely upon the runtime to resolve forward refs (#27132)
The way that `UpgradeAdapter` needs to be setup, you often find that you must pass a `forwardRef` for an `NgModule.import`. Pre-ivy, this gets resolved at runtime, but until this is implemented in ivy, we can workaround it by resolving it in the `UpgradeAdapter` upfront. This should be backward-compatible since by the time we actually create the dynamic `NgModule` that has the import, the imported class should be defined. PR Close #27132
This commit is contained in:
parent
69c7488927
commit
a4462c24fa
|
@ -6,7 +6,7 @@
|
||||||
* found in the LICENSE file at https://angular.io/license
|
* found in the LICENSE file at https://angular.io/license
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import {Compiler, CompilerOptions, Directive, Injector, NgModule, NgModuleRef, NgZone, StaticProvider, Testability, Type} from '@angular/core';
|
import {Compiler, CompilerOptions, Injector, NgModule, NgModuleRef, NgZone, StaticProvider, Testability, Type, resolveForwardRef} from '@angular/core';
|
||||||
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
|
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
|
||||||
|
|
||||||
import * as angular from '../common/angular1';
|
import * as angular from '../common/angular1';
|
||||||
|
@ -574,7 +574,7 @@ export class UpgradeAdapter {
|
||||||
{provide: $COMPILE, useFactory: () => ng1Injector.get($COMPILE)},
|
{provide: $COMPILE, useFactory: () => ng1Injector.get($COMPILE)},
|
||||||
this.upgradedProviders
|
this.upgradedProviders
|
||||||
],
|
],
|
||||||
imports: [this.ng2AppModule],
|
imports: [resolveForwardRef(this.ng2AppModule)],
|
||||||
entryComponents: this.downgradedComponents
|
entryComponents: this.downgradedComponents
|
||||||
};
|
};
|
||||||
// At this point we have ng1 injector and we have prepared
|
// At this point we have ng1 injector and we have prepared
|
||||||
|
|
Loading…
Reference in New Issue