在Angular 6中,使用UpgradeModule将AngularJS应用程序升级为Angular应用程序时,可能会遇到UpgradeModule无法解析ApplicationModule的所有参数的问题。这是由于Angular 6中引入了新的NgModule装饰器,它在某些情况下可能无法正确处理AngularJS模块。
要解决这个问题,可以尝试以下方法:
@NgModule({
imports: [BrowserModule],
providers: [
{ provide: 'someDependency', useValue: someDependency },
{ provide: 'anotherDependency', useValue: anotherDependency },
...
],
bootstrap: [AppComponent]
})
export class ApplicationModule { }
import { InjectionToken } from '@angular/core';
export const SOME_DEPENDENCY = new InjectionToken('someDependency');
export const ANOTHER_DEPENDENCY = new InjectionToken('anotherDependency');
@NgModule({
imports: [BrowserModule],
providers: [
{ provide: SOME_DEPENDENCY, useValue: someDependency },
{ provide: ANOTHER_DEPENDENCY, useValue: anotherDependency },
...
],
bootstrap: [AppComponent]
})
export class ApplicationModule { }
然后在UpgradeModule的bootstrap方法中使用UpgradeModule.inject方法来获取参数。例如:
import { UpgradeModule } from '@angular/upgrade/static';
import { SOME_DEPENDENCY, ANOTHER_DEPENDENCY } from './application.module';
platformBrowserDynamic().bootstrapModule(ApplicationModule).then(platformRef => {
const upgrade = platformRef.injector.get(UpgradeModule);
upgrade.bootstrap(document.body, ['myApp'], { strictDi: true, providers: [
{ provide: 'someDependency', useValue: upgrade.inject(SOME_DEPENDENCY) },
{ provide: 'anotherDependency', useValue: upgrade.inject(ANOTHER_DEPENDENCY) },
...
]});
});
这些方法将帮助您解决UpgradeModule无法解析ApplicationModule的所有参数的问题,并成功升级AngularJS应用程序到Angular 6。