angular项目中只加载一次核心模块的写法

在项目中,核心模块一般只加载一次,写法如下:

 1 import { NgModule ,SkipSelf,Optional} from '@angular/core';
 2 import { CommonModule } from '@angular/common';
 3 
 4 @NgModule({
 5   declarations: [],
 6   imports: [
 7     CommonModule
 8   ]
 9 })
10 export class CoreModule {
11   constructor(@Optional() @SkipSelf() parent:CoreModule) {
12     if(parent){
13       throw new Error("模块已存在,不能再次加载!")
14     }
15   }
16 }

@SkipSelf() 注解避免重复注入。去系统的父级找依赖。
@Optional() 让SkipSelf作为可选,在第一次注入时候系统中并没有CoreModule时候成功注入。

posted @ 2022-06-02 14:04  .52HZ  阅读(58)  评论(0编辑  收藏  举报