源代码:

import {StoreModule} from '@ngrx/store';
import {reducers} from './reducer';
import { NgModule } from '@angular/core';
import { CounterComponent } from './container/component/counter/counter.component';
import { CommonModule } from '@angular/common';
import {FormsModule, ReactiveFormsModule} from '@angular/forms';
import { BookManageComponent } from './container/component/bookmanage/book-manage.component';
import { SearchInputComponent } from './searchbookcomponents/search-input/search-input.component';
import { BookListComponent } from './searchbookcomponents/book-list/book-list.component';import { BookDetailComponent} from './searchbookcomponents/book-detail/book-detail.component';import {NgZorroAntdModule} from 'ng-zorro-antd';
import { BookManageService } from './service/book-manage.service';
import { EffectsModule } from '@ngrx/effects';
import { BookManageEffects } from './effects/book-manager.effect';@NgModule({imports: [CommonModule,NgZorroAntdModule,FormsModule,ReactiveFormsModule,StoreModule.forFeature('example', reducers), // 这个才是关键哦,EffectsModule.forFeature([BookManageEffects])],declarations: [CounterComponent, BookManageComponent,SearchInputComponent, BookListComponent, BookDetailComponent],exports: [CounterComponent, BookManageComponent, BookListComponent, BookDetailComponent],providers: [BookManageService]
})
export class ExampleModule { }

core.js里找到this.injectorDefTypes:

展开[[Entries]]:

找到ExampleModule下的imports区域:

应用程序代码中定义的代码:

StoreModule.forFeature('example', reducers)

这个方法实际上返回了一个module StoreFeatureModule,在运行时能够看到:


应用程序编写的reducer也会出现在这里:

多层级注入器 ModuleInjector 与 ElementInjector

这部分阐述来自这篇知乎文章详解 Angular 依赖注入

  • ModuleInjector:通过 @NgModule() 或者 @Injectable() 配置
  • ElementInjector:通过 @Directive() 或 @Component() 中的 providers 属性中配置

ModuleInjector

  1. Injectable() 的 providedIn 属性是要高于@NgModule() 的 providers 数组
  2. 当使用 Injectable() 的 providedIn 属性时,优化工具可以做 tree-shaking,比如 providedIn: ‘root’

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

NgModule imports定义的运行时数据结构相关推荐

  1. C专家编程 第6章 运动的诗章:运行时数据结构 6.1 a.out及其传说

    运动的诗章:运行时数据结构      编程语言理论的经典对立之一就是代码和数据的区别.有些语言(如Lisp)把二者视为一体.其他语言(如C语言)通常维持两者的区别.Internet蠕虫非常难以被人们所 ...

  2. C专家编程-Chapter6 运行时数据结构(转)

    a.out是链接器的输出. a.out is a file format used in older versions of Unix-like computer operating systems ...

  3. C语言运行时数据结构

    段(Segment): 对象文件/可执行文件: SVr4 UNIX上被称为ELF(起初"Extensible Linker Format", 现在"Executable ...

  4. C专家编程--读书笔记六 运行时数据结构

    第六章 一.知识点 1.代码和数据的区别也可以认为是编译时和运行时的分界线.编译器的绝大部分工作都跟翻译代码有关:必要的数据存储管理的绝大部分都在运行时进行.(P121) 2."a.out& ...

  5. C专家编程 第6章 运动的诗章:运行时数据结构 6.3 操作系统在a.out文件里干了些什么

    操作系统在a.out文件里干了些什么      为什么a.out要以段的形式组织.段可以方便地映射到链接器在运行时可以直接载入的对象中!载入器只是取文件中的每个段的映像,并直接将它们放入到内存中.从本 ...

  6. Angular jasmine单元测试框架spec的运行时数据结构

    以我单元测试里这段代码为例: 通过describe函数创建一个suite,即spec的集合: 真正的spec由函数it创建:其中expectable是human readable的字符串描述信息,描述 ...

  7. 运行时常量池在哪里_Java虚拟机详解(二)------运行时内存结构

    首先通过一张图了解 Java程序的执行流程: 我们编写好的Java源代码程序,通过Java编译器javac编译成Java虚拟机识别的class文件(字节码文件),然后由 JVM 中的类加载器加载编译生 ...

  8. Java内存管理:Java内存区域 JVM运行时数据区

    Java内存管理:Java内存区域 JVM运行时数据区 在前面的一些文章了解到javac编译的大体过程.Class文件结构.以及JVM字节码指令. 下面我们详细了解Java内存区域:先说明JVM规范定 ...

  9. 最全的 JVM 面试知识点(一):运行时数据区

    转自: https://blog.csdn.net/keets1992/article/details/92089754 不是码农,不会敲代码的她,却最懂程序员!| 人物志: https://blog ...

最新文章

  1. MyBatis 中的 set 元素用法(MyBatis 3.1.1)
  2. Cocos2d-x项目移植到WP8系列之二:开篇
  3. android textview图标左侧,Android 自定义 TextView drawableTop 图标与文字左对齐(效果图)...
  4. 做好过程质量保证QA工作的几个关键方面
  5. 【6 插值方法】实例实战篇
  6. 2021暑假实习-SSM超市积分管理系统-day09笔记
  7. linux-组管理-添加组-删除组
  8. cesium获取模型实时坐标_Cesium 顶点着色器中解算模型坐标
  9. kuka的备选安装包有什么功能_机械臂的软浮动功能
  10. IOS程序之发送短信代码实现
  11. C#实现SQL SERVER2008聚合函数
  12. Linux开机启动流程详细步骤是什么?
  13. matlab中fix函数是啥,fix函数(函数fix是什么意思)
  14. 使用MD5加密的登陆demo
  15. 2026年预标准5G营收将达到2000亿美元
  16. Vue、VueCLI(脚手架)安装、使用详细步骤
  17. 图解 K8S(06):调度利器之污点与容忍度(压力驱逐)
  18. safari下载中文文件名乱码
  19. 常用计算机设备教案,计算机基础教案
  20. OpenJudge 6043 哆啦A梦的时光机——又短又快的双向广搜

热门文章

  1. 点击panel滚动条滚动到底部
  2. php 写一个水仙花数的函数
  3. PHP学习笔记——Php文件引入
  4. 十大开源ERP点评 献给深水区的中小企业和CIO们
  5. DevExpress GridControl功能总结
  6. 安装bashee-1-1.2.1.tar.bz2多媒体播放器时的出错问题
  7. string数组批量转换成Int数组
  8. Enjoy Android
  9. Document的理解
  10. 一个比较完美的spacer div技巧