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时候成功注入。