需要修改至少四个地方
1. 将子组件进行模块化操作
2.生成子组件module 、子组件router
3.配置主路由 信息 改为loadChild
4.配置appModule 删除引入

以product组件 为例 这个组件是一个一级菜单所以需要给这个页面生成一个module

1.生成 product.module组件
2.生成routers 路由列表(这里可以分为两个文件写)

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import {ProductComponent} from './product.component';
import {RouterModule} from '@angular/router'; const routes = [
{
path: '', // 注意: 这里一定要写空
component: ProductComponent
}
]; @NgModule({
imports: [
CommonModule,
RouterModule.forChild(routes) // 导入 product模块自己的路由
],
exports: [ProductComponent], // 导出需要引用的模块
declarations: [ProductComponent]
})
export class ProductModule {
}

  

3.改造 主路由 使用惰性加载

import {NgModule} from '@angular/core';
import {
Routes, RouterModule
} from '@angular/router';
import {IndexComponent} from './core/index/index.component';
const routes: Routes = [
{
path: 'index',
component: IndexComponent
},
{
path: 'aboutus',
loadChildren: './core/aboutus/aboutus.module#AboutusModule'
},
{
path: 'product', // 这里需要填写路径
// 使用惰性加载 其中 #之前是 product.module 的 路径
// #之后是 导出的module 名称
loadChildren: './core/product/product.module#ProductModule'
},
{
path: '**', // 路由错误的时候 跳转首页
redirectTo: ''
},
]; @NgModule({
imports: [RouterModule.forRoot(routes, {
useHash: true
})],
exports: [RouterModule],
})
export class AppRoutingModule {}

  

4.修改 app.module 主模块 信息

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core'; import { AppComponent } from './app.component';
import {ComponentsModule} from './components/components.module';
import { IndexComponent } from './core/index/index.component';
import {AppRoutingModule} from './app-routing.module';
import {FormsModule} from '@angular/forms'; @NgModule({
declarations: [
AppComponent,
IndexComponent,
],
// 重要! 删除需要 惰性加载的module 如果这里添加了 惰性加载的模块 那么将不是惰性加载
// 这里不需要加入 需要惰性加载的module
// 只需要保留 不需要惰性加载的模块即可
imports: [
BrowserModule,
FormsModule, // 双向数据绑定 module
ComponentsModule,
AppRoutingModule,
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }

  

在app.component.html 中 测试

<ul>
<li>
<a routerLink="index"> 首页 </a>
</li>
<li>
<a routerLink="aboutus"> 关于我们 </a>
</li>
<li>
<a routerLink="product"> 产品简介 </a>
</li> </ul> <router-outlet></router-outlet>

  

这个时候 进行点击测试 如果页面中出现 并且只出现过一次 js module 文件 则说明 成功

(下图是我配置的两个惰性加载module 其中一个是product 一个是aboutus)

Angular2 ng2 如何配置惰性加载的更多相关文章

  1. angular惰性加载拓展剖析

    最近把一个比较旧的业余项目重新升级了下,将主文件进行了剥离,增加了些惰性加载的配置,将过程中一些零散的知识点做个总结,同时尽量深入原理实现层面. 项目环境: 前端框架:angular2.0.0-bet ...

  2. PDF在线阅读 FlexPaper 惰性加载 ;

    关于PDF在线阅读问题,比较普遍的做法是转换成swf文件来浏览:由于项目需要,就用 flexpaper 来实现了下,功能比较简单:但是文件的惰性加载确实让笔者挠头了一把! 下面是笔者的方法: 采用流的 ...

  3. 关于angular5的惰性加载报错问题

    之前为了测试一个模块优化问题,于是用angular-cli快速搭建了个ng5的脚手架demo,在应用惰性加载功能的时候发现浏览器报错如下: ERROR Error: Uncaught (in prom ...

  4. Angular惰性加载的特性模块

    一:Angular-CLI建立应用 cmd命令:ng new lazy-app --routing    (创建一个名叫 lazy-app 的应用,而 --routing 标识生成了一个名叫 app- ...

  5. Crystal框架配置参数加载机制详解?

    前言 定义 配置参数定义的形式 配置参数文件定义在哪里? 配置参数加载的优先级 如何使用配置参数? 最佳实践 Jar项目中如何定义配置参数? War项目中如何定义或重载Jar包中的配置参数? 开发人员 ...

  6. 雷林鹏分享:jQuery EasyUI 树形菜单 - 树形网格惰性加载节点

    jQuery EasyUI 树形菜单 - 树形网格惰性加载节点 有时我们已经得到充分的分层树形网格(TreeGrid)的数据. 我们还想让树形网格(TreeGrid)按层次惰性加载节点. 首先,只加载 ...

  7. igmpproxy源代码学习——配置信息加载 loadConfig

            在igmpproxy主程序运行之前需要先读取配置文件,igmpproxy的配置文件通常为/etc/igmpproxy.conf或者/var/igmpproxy.conf 其内容如下: ...

  8. Spring Boot自定义配置与加载

    Spring Boot自定义配置与加载 application.properties主要用来配置数据库连接.日志相关配置等.除了这些配置内容之外,还可以自定义一些配置项,如: my.config.ms ...

  9. Aspnetcore下面服务器热更新与配置热加载

    原文:Aspnetcore下面服务器热更新与配置热加载 Asp.net的热更新方案Appdomain在aspnetcore中不被支持了 新的方案如下: 配置文件更新选项 reloadOnChange ...

随机推荐

  1. chrome常用扩展程序汇总(程序员版)

    chrome常用扩展程序之程序员版 1.chrome扩展程序 Chrome插件是一个由Web技术开发.用来增强浏览器功能的小程序,其实就是一个由HTML.CSS.JS.图片等静态资源组成的一个.crx ...

  2. 简单实现SSO

    方案一:原理:基于SSO Server 端的登录情况,跳转至SOO-client的各个端. 每次返回一个 ticker 随机票据值识别. 配置服务端 执行 :git clone https://git ...

  3. js 调用打印机方法

    <button onclick="localdy({php echo $item['order']['id'];})" class="btn btn-xs orde ...

  4. IP地址类型

    为了适应不同的网络,IP地址空间被分为5类,分别是A.B.C.D和E类,其中A,B,C类最常用,D类用于组播,E类用于科研 IP地址类型 第一字节十进制范围 二进制固定最高位 二进制网络位 二进制主机 ...

  5. Python菜鸟快乐游戏编程_pygame(5)

    Python菜鸟快乐游戏编程_pygame(博主录制,2K分辨率,超高清) https://study.163.com/course/courseMain.htm?courseId=100618802 ...

  6. NameNode与DataNode的工作原理剖析

    NameNode与DataNode的工作原理剖析 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.HDFS写数据流程 >.客户端通过Distributed FileSyst ...

  7. node-fs文件系统模块

    在node环境中所有与文件操作都是通过fs核心模块实现的.包括文件的创建.删除.查询以及读写和写入 在 fs 模块中,所有的方法都分为同步和异步两种实现,具有 sync 后缀的方法为同步方法,不具有 ...

  8. nginx资料汇总

    nginx docker 中的一些目录和 windows下是不同的, 静态内容目录: /usr/share/nginx/html 配置文件目录: /etc/nginx 日志输出目录: /var/log ...

  9. Navicat断开连接解决办法

  10. JS代码风格自动规整工具Prettier

    问题背景 通常使用 ESLint做代码风格检查检查, 和部分代码质量检查. 但是使用ESLint在入库时候, 会产生很多的代码修正工作, 需要开发者一个一个的修改. 如果很多,并且时间紧迫,甚是尴尬. ...