博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Angular项目中核心模块core Module只加载一次的实现
阅读量:6805 次
发布时间:2019-06-26

本文共 1567 字,大约阅读时间需要 5 分钟。

核心模块CoreModule在整个系统中只加载一次,如何实现?

创建core Modele:ng g m core

既然CoreModule是类,就有构造函数,在构造函数中进行依赖注入。

export class CoreModule {   constructor(parent: CoreModule){    if(parent){      throw new Error('模块已经存在,不能重复加载!')    }  }}

使用SkipSelf注解避免重复注入。去系统的父级找依赖。

使用Optional注解 让SkipSelf作为可选,在第一次注入时候系统中并没有CoreModule时候成功注入。

import { NgModule,SkipSelf,Optional} from '@angular/core';import { CommonModule } from '@angular/common';@NgModule({  imports: [    CommonModule  ],  declarations: []})export class CoreModule {   constructor(@Optional() @SkipSelf() parent: CoreModule){ //加上@SkipSelf()注解    if(parent){      throw new Error ('模块已经存在,不能再次加载');    }  }}

后续加了模块,后在declartions中声明后需要在exports中导出。

Header,Footer,Sidebar放到核心模块中。

ng g c core/header --spec=falseng g c core/footer --spec=falseng g c core/sidebar --spec=false

然后

import { NgModule,SkipSelf,Optional} from '@angular/core';import { CommonModule } from '@angular/common';import { HeaderComponent } from './header/header.component';import { FooterComponent } from './footer/footer.component';import { SidebarComponent } from './sidebar/sidebar.component';@NgModule({  imports: [    CommonModule  ],  declarations: [HeaderComponent, FooterComponent, SidebarComponent],  exports:[    HeaderComponent, FooterComponent, SidebarComponent  ]})export class CoreModule {   constructor(@Optional() @SkipSelf() parent: CoreModule){ //加上@SkipSelf()注解    if(parent){      throw new Error ('模块已经存在,不能再次加载');    }  }}

这样只需要在app.module.ts中imports coreModule就可以了。

 

本文作者,因知识本身在变化,作者也在不断学习成长,文章内容也不定时更新,为避免误导读者,方便追根溯源,请诸位转载注明出处: 有问题欢迎与我讨论,共同进步。

你可能感兴趣的文章
分布式日志收集系统实践(视频教程)
查看>>
业界大佬患互联网手机焦虑症 圈地运动骤然爆发
查看>>
拍拍二手重装上阵,京东剑指闲鱼胜算几何?
查看>>
看看其实挺心酸的。
查看>>
实操总结:小程序裂变0成本获客3要素
查看>>
ARM给服务器厂商更多创新机会
查看>>
[2011 年终项目总结] 第六章、网站测试
查看>>
找到7天内要过生日的记录
查看>>
获取桌面DC: GetDC(GetDesktopWindow())与GetDC(NULL)
查看>>
Objective-C 基础,类和对象,方法和消息,已声明的属性和存取方法,块对象,协议和范畴类,预定义类型和编码策略...
查看>>
NDK编译时指定NDK_MODULE_PATH的方法
查看>>
解决Android 应用运行报Unable to resolve superclass of L错误
查看>>
经典排序之 归并排序
查看>>
调用手机震动
查看>>
编程珠玑:位图法排序
查看>>
CREATEMUTEX
查看>>
矢量数据压缩:道格拉斯普克算
查看>>
IIS添加对ashx文件的支持
查看>>
Top Down Operator Precedence - 自顶向下算符优先分析法
查看>>
android 来电自动接听和自动挂断
查看>>