【发布时间】:2017-11-08 16:23:49
【问题描述】:
Angular5 引入了一种将应用程序从 AngularJS 升级到 Angular 的新方法 -
downgradeModule。它应该解决在这种混合应用程序中急切更改检测的问题。到目前为止,在 Angular4 中我成功地使用了UpgradeModule,但是由于检测到变化而导致了一些性能问题。现在我正在尝试使用downgradeModule。在这种方法中,首先启动 AngularJS,下一个 downgradeModule 启动 Angular。这样 AngularJS 在 AngularZone 之外运行,应该冷静下来检测什么。
main.ts 在.angular-cli.json 中被指向为“main”
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app.module';
import {enableProdMode, StaticProvider} from '@angular/core';
import { downgradeModule } from '@angular/upgrade/static';
enableProdMode();
declare var angular: any;
const bootstrapFn = (extraProviders: StaticProvider[]) => {
const platformRef = platformBrowserDynamic(extraProviders);
return platformRef.bootstrapModule(AppModule);
};
const myDowngradedModule = downgradeModule(bootstrapFn);
angular.bootstrap(document.documentElement, [
'legacyApp',
myDowngradedModule
]);
现在,AngularJS 开始很好,但 Angular没有。控制台没有错误,没有提示。只是主选择器,例如。 <my-app> 未评估。
app.module.ts 在以前的工作版本中没有任何变化。
@NgModule({
imports: [
CommonModule,
BrowserModule,
UpgradeModule,
RouterModule.forRoot([], { initialNavigation: false })
],
providers: [{provide: APP_BASE_HREF, useValue : '/shop/' }],
declarations: [ AppComponent ],
bootstrap: [ AppComponent ]
})
export class AppModule {
ngDoBootstrap() {}
}
我使用了一些 Angular 文档草稿,因为主要文档没有提及 downgradeModule。
https://pr18487-aedf0aa.ngbuilds.io/guide/upgrade-performance
有人知道为什么 Angular5 部分没有启动吗?
仅供参考,main.ts 和 UpgradeModule 的先前外观效果很好,但更改检测。
platformBrowserDynamic().bootstrapModule(AppModule).then(platformRef => {
const upgrade = platformRef.injector.get(UpgradeModule) as UpgradeModule;
upgrade.bootstrap(document.documentElement, ['legacyApp']);
platformRef.injector.get(Router).initialNavigation();
});
【问题讨论】:
标签: angularjs angular angular-upgrade angular5