NgModule imports定义的运行时数据结构

时间:2022-07-28
本文章向大家介绍NgModule imports定义的运行时数据结构,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

源代码:

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也会出现在这里: