Angular项目中核心模块core Module只加载一次的实现

核心模块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=false
ng g c core/footer --spec=false
ng 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就可以了。

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将ASP.NET Core Angular项目部署到IIS上,并且遇到"non-js module files deprecated"的问题。 首先,我们需要确保我们正在使用的是最新版本的ASP.NET CoreAngular。新版本通常会修复旧版的已知问题。 然后,我们需要检查我们的Angular项目是否有使用到非JS模块文件(non-js module files)。这些文件可能是早期版本的遗留文件,因此被标记为过时(deprecated)。 要解决这个问题,我们可以按照以下步骤进行操作: 1. 检查Angular项目Angular.json配置文件。在该文件,我们需要确保所有的非JS模块文件都被正确地排除在构建过程之外。这可以通过在 "build" 部分的 "assets" 属性排除这些文件来实现。 2. 确保我们使用的是正确的构建命令。在命令行或脚本,我们应该使用 "ng build" 命令来构建我们的Angular项目,并确保在构建过程自动排除非JS模块文件。例如,我们可以使用以下命令构建项目: ``` ng build --prod ``` 3. 删除任何已经存在的非JS模块文件,以避免将其错误地部署到服务器上。通常,这些文件可以在Angular项目的 "src" 目录找到,并且可能以 ".css", ".html" 或 ".json" 结尾。 4. 部署我们的ASP.NET Core Angular项目到IIS。可以通过将项目文件复制到IIS网站目录或使用自动化工具(例如Web Deploy)进行部署来实现。确保将ASP.NET Core应用程序部署为网站的子目录,以便正确配置IIS的应用程序池。 通过按照上述步骤进行操作,我们应该能够成功地将ASP.NET Core Angular项目部署到IIS上并解决"non-js module files deprecated"的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值