所以我用 UpgradeModule 设置了一个混合的 AngularJS / Angular 应用程序,它工作正常,但我有一些性能问题。现在我想更改我的应用程序以使用 downgradeModule。我已阅读有关使用 downgradeModule 的官方文档,但无法使多个模块正常工作。
我有 3 个 Angular 模块:
- AppModule(根角模块)
- 共享模块(由每个功能模块导入)
- PromoCodesModule(我的应用功能模块)
我使用带有 main.ts 文件的 webpack 作为条目。
应用模块
import { NgModule } from "@angular/core";
import { BrowserModule } from "@angular/platform-browser";
import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
import { FormsModule, ReactiveFormsModule } from "@angular/forms";
import { HttpClientModule } from "@angular/common/http";
import { PromoCodesModule } from "./src-angular/promo-codes/promo-codes.module";
import { SharedModule } from "./src-angular/shared/shared.module";
@NgModule({
imports: [
BrowserAnimationsModule,
HttpClientModule,
FormsModule,
ReactiveFormsModule,
BrowserModule,
SharedModule,
PromoCodesModule,
],
declarations: [],
entryComponents: [],
providers: [],
})
export class AppModule {
ngDoBootstrap() {}
}
共享模块
import { NgModule } from "@angular/core";
import { CommonModule } from "@angular/common";
@NgModule({
imports: [
CommonModule
],
declarations: [
],
entryComponents: [
],
providers: [
],
exports: [
CommonModule,
],
})
export class SharedModule {}
促销代码模块
import { NgModule } from "@angular/core";
import { SharedModule } from "../shared/shared.module";
import { PromoCodesDetailsPageComponent } from "./pages/promo-codes-details-page/promo-codes-details-page.component";
import { PromoCodesEntryPageComponent } from "./pages/promo-codes-entry-page/promo-codes-entry-page.component";
import { PromoCodesListPageComponent } from "./pages/promo-codes-list-page/promo-codes-list-page.component";
import { PromoCodesRestNewService } from "./services/promo-codes-rest/promo-codes-rest-new.service";
import { PromoCodesStateService } from "./services/promo-codes-state-service/promo-codes-state.service";
@NgModule({
imports: [SharedModule],
declarations: [
PromoCodesListPageComponent,
PromoCodesEntryPageComponent,
PromoCodesDetailsPageComponent,
],
entryComponents: [
PromoCodesListPageComponent,
PromoCodesEntryPageComponent,
PromoCodesDetailsPageComponent,
],
providers: [
PromoCodesRestNewService,
PromoCodesStateService,
],
exports: [
PromoCodesListPageComponent,
PromoCodesEntryPageComponent,
PromoCodesDetailsPageComponent,
],
})
export class PromoCodesModule {}
main.ts
import "core-js/es7/reflect";
import "zone.js";
import "@angular/localize/init";
import { StaticProvider } from "@angular/core";
import { platformBrowserDynamic } from "@angular/platform-browser-dynamic";
import {
downgradeModule,
downgradeComponent,
downgradeInjectable,
} from "@angular/upgrade/static";
import { AppModule } from "./app.module";
import { SharedModule } from "./src-angular/shared/shared.module";
import { PromoCodesListPageComponent } from "./src-angular/promo-codes/pages/promo-codes-list-page/promo-codes-list-page.component";
import { PromoCodesModule } from "./src-angular/promo-codes/promo-codes.module";
import { PromoCodesStateService } from "./src-angular/promo-codes/services/promo-codes-state-service/promo-codes-state.service";
declare var angular: any;
const bootstrapFnAppModule = (extraProviders: StaticProvider[]) => {
const platformRef = platformBrowserDynamic(extraProviders);
return platformRef.bootstrapModule(AppModule);
};
const bootstrapFnPromoCodesModule = (extraProviders: StaticProvider[]) => {
const platformRef = platformBrowserDynamic(extraProviders);
return platformRef.bootstrapModule(PromoCodesModule);
};
const bootstrapFnSharedModule = (extraProviders: StaticProvider[]) => {
const platformRef = platformBrowserDynamic(extraProviders);
return platformRef.bootstrapModule(SharedModule);
};
const downgradedAppModule = downgradeModule(bootstrapFnAppModule);
export const downgradedPromoCodesModule = downgradeModule(
bootstrapFnPromoCodesModule
);
export const downgradedSharedModule = downgradeModule(bootstrapFnSharedModule);
angular
.module("ngMyApp", [
"myApp",
downgradedAppModule,
downgradedSharedModule,
downgradedPromoCodesModule,
])
.directive(
"promoCodesListPage",
downgradeComponent({
component: PromoCodesListPageComponent,
downgradedModule: downgradedPromoCodesModule,
})
)
.factory(
"promoCodesStateService",
downgradeInjectable(PromoCodesStateService, downgradedPromoCodesModule)
);
angular.bootstrap(document.body, ["ngMyApp"]);
促销代码-route.config
(function () {
'use strict';
angular
.module('myApp')
.config(PromoCodesNewRouteConfig);
/* @ngInject */
function PromoCodesNewRouteConfig($stateProvider, UI_ROUTER_CUSTOM_CONSTANTS, BreadcrumbsGenerationServiceProvider, BUILD_CONFIG) {
$stateProvider
.state('promo-codes-new', {
// SOME CODE //
resolve: {
promoCodesStateService: ['promoCodesStateService', function initializeToStoreStateBetweenInternalViews (promoCodesStateService) {
promoCodesStateService.init();
return promoCodesStateService;
}],
},
onExit: function (promoCodesStateService) {
promoCodesStateService.clean();
}
})
}
})();
应用程序似乎可以正确引导,但是当我转到促销代码路线时出现此错误: 在此处输入图像描述
我做错了什么?