angular4——core模块只在项目中只加载一次

 

coreModule是核心模块,适合那些只在项目中加载一次的组件和服务。

 

既然core.module 是一个类, 那么它就有构造函数,就可以在构造函数当中进行依赖型注入。

angular4——core模块只在项目中只加载一次

如果core.module已经存在呢,那么就抛出异常

angular4——core模块只在项目中只加载一次

但是目前这种写法是很危险的。因为这是一个无尽循环。在这个构造器中注入core.module的时候,它会去找CoreModule 这个依赖,找这个依赖的时候,发现还是这个CoreModule,进入构造的时候还得进行一次注入,然后行成一个无尽的循环。

    要解决这个问题,我们就要引入一个SkipSelf:

angular4——core模块只在项目中只加载一次

angular4——core模块只在项目中只加载一次

这个@SkipSelf 的意思是:这个池子里已经有CoreModule了, 那么你去父级寻找依赖,而不是在这个类里面打转。

第一次加载这个coremodule的时候怎么办,这个时候系统里没有CoreModule。所以这个时候我们要继续引入一个叫Optional的东西。

angular4——core模块只在项目中只加载一次

表示说, 这个依赖呢,是可选的。如果第一次父级不存在,那么就正常使用这个进行构造就好了,如果有,那么就抛出异常,去父级找就好了。