延迟加载模块没有路由的Angular 7仍然将typescript放在main.js中

问题描述 投票:0回答:1

所以我按照一些关于如何在没有角度路由器的情况下进行延迟加载的教程。我设法做到了一定程度。

import {NgModule} from '@angular/core';
import {GeolocalisationComponent} from './geolocalisation.component';
import {AngularOpenlayersModule} from 'ngx-openlayers';
import {CommonModule} from '@angular/common';

const components = [
    GeolocalisationComponent,
];

@NgModule({
    declarations: [
        components
    ],
    exports: [
        components
    ],
    imports: [
        CommonModule,
        AngularOpenlayersModule,
    ],
    entryComponents: [
        components
    ]
})
export class GeolocalisationModule {
}

然后在angular.json我有

  "lazyModules": [
       "src/app/components/engine/sections/geolocalisation/geolocalisation.module",

我加载它像这样:

const path = 'src/app/components/engine/sections/geolocalisation/geolocalisation.module#GeolocalisationModule';
this.loader.load(path).then((moduleFactory: NgModuleFactory<any>) => {
    const moduleRef = moduleFactory.create(this.injector);
    const compFactory = moduleRef.componentFactoryResolver
        .resolveComponentFactory(GeolocalisationComponent);
    geolocalisationOutlet.createComponent(compFactory);
});

一切正常但我注意到我在geolocalisation.component.ts中放置的代码在构建(函数和导入)时仍然在main.js中。因此,如果我在这里导入一个巨大的插件,它仍然在main.js内部构建,这对我来说是懒惰加载的目的。其他人有同样的问题吗?

通过函数和导入我的意思是我在geolocalisation.component.ts内部构建的函数,如果我导入类似momentjs的东西,它会将所有momentjs放在main.js文件中,即使我只需要这个组件。

angular typescript lazy-loading
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.