Angular 2 Lazy loading a NgModule in a NPM module with angular router

邮差的信 提交于 2020-01-01 09:25:30

问题


I have been lazy loading modules in routes e.g.

export const HomeRoute: Route = {
  path: '',
  component: HomeComponent,
  canActivate: [AuthGuard],
  children: [
    {path: 'dashboard', loadChildren: 'app/+dashboard/db.module#DashboardModule'}
  ]
};

I would like to put my "pages" into NPM modules. What is the route to the node_module that I should use in the loadChildren attribute? I am using angular-cli 1.0.0-beta.16

I have tried

{path: 'lazy', loadChildren: '../node_modules/hello-world/components#HelloWorld' }

also

{path: 'lazy', loadChildren: 'hello-world/components#HelloWorld' }

The exported class is: -

import {Component} from '@angular/core';

@Component({
    selector: 'hello-world',
    styles: [`
       h1 {
            color: blue;
        }
    `],
    template: `<div>
                  <h1 (click)="onClick()">{{message}}</h1>
               </div>`
})
export class HelloWorld {

    message = "Click Me ...";

    onClick() {
        this.message = "Hello World!";
        console.log(this.message);

    }
}

Is there anything else I should try?


回答1:


This currently isn't possible - see a response from the AngularJS CLI team here: -

https://github.com/angular/angular-cli/issues/2601

"This is a very relevant question. I don't think we support it in the CLI atm." (Currently version beta 17)

Datumgeek has implemented lazy loading from modules in a different way (outside of CLI) here: - https://github.com/datumgeek/a2dyn/blob/master/README.md#development-server

I will update the answer if it becomes possible in the Angular CLI in the future




回答2:


check that HelloWorld is an exported class and not a 'default export'. otherwise it won't work.



来源:https://stackoverflow.com/questions/39898417/angular-2-lazy-loading-a-ngmodule-in-a-npm-module-with-angular-router

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!