需要修改至少四个地方
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. Django相关问题

    遇到models模型变动后无法用migrations生成改动后的表通过以下几个方面实现 1 python  manage.py makemigrations yourapp(你改变的app) 2  p ...

  2. x86/x64/x86_64/i386/ia32/ia64/amd/amd64 辨析

    x64 = x86_64 = amd64 64位指令集,是对IA-32的扩展,由AMD提出,implemented by AMD,Intel.可兼容32位指令集(IA-32) 目前大部分64位计算机均 ...

  3. Vscode生成verilog例化

    前言 手动例化又慢又容易出错,孩子老犯错怎么办? 当然是脚本一劳永逸. 流程 (1)在vscode中安装如下插件. (2)在电脑中安装python3以上的环境. 下载地址:https://www.py ...

  4. [APIO2017]商旅(floyd+分数规划+SPFA)

    题解:首先肯定要跑最短路,而n<=100,所以可以用floyd,然后根据比值,很容易想到二分答案,然后再SPFA跑一遍负环,就能求出解了. #include<bits/stdc++.h&g ...

  5. python第十三天,函数的嵌套定义,global,nonlocal关键字的使用,闭包及闭包的运算场景,装饰器

    今日内容 1. 函数的嵌套定义 2.global,nonlocal关键字 3.闭包及闭包的运用场景 4.装饰器 函数的嵌套定义 1. 概念:在一个函数内部定义另一个函数 2 .为什么要有函数的嵌套定义 ...

  6. (二叉树 BFS) leetcode 107. Binary Tree Level Order Traversal II

    Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left ...

  7. 重装系统windows10/8/7,绝对纯净版永久激活的详细步骤和固态硬盘找不到分区的原因

    简介:重装系统有两种: 一种是在线重装,可实现电脑双系统或多系统,也可单系统(重装在另外一个盘,再去格式化系统盘),这种方式比较麻烦,前提电脑能开机使用,但是一般能启动使用也没人去重装系统,但是不需要 ...

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

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

  9. OS + CentOS cmake

    s Linux编译安装cmake最新版本 https://blog.51cto.com/sadoc/1910753 https://cmake.org/download/ https://github ...

  10. NCE损失(Noise-Constrastive Estimation Loss)

    1.算法概述 假设X是从真实的数据(或语料库)中抽取的样本,其服从一个相对可参考的概率密度函数P(d),噪音样本Y服从概率密度函数为P(n),噪音对比估计(NCE)就是通过学习一个分类器把这两类样本区 ...