2017-02-21 86 views
0

角2 ng-bootstrap指示根模块需要在根NgModuleimports属性登记:角2引导根级别模块

@NgModule({ 
    declarations: [AppComponent, ...], 
    imports: [NgbModule.forRoot(), ...], 
    bootstrap: [AppComponent] 
}) 
export class AppModule {} 

Angular 2 Styleguide当它会更有意义来注册sharedcore模块中的NgbModule?如果是这样,那么如何执行此第三方模块的forRoot(),以便我可以将其作为SharedModule的一部分导入到其他功能模块中?它是否可以在CoreModule中注册为提供商,但是对于第三方库(如ng-bootstrap),单身人士是否可以成为明智的选择?

@NgModule({ 
    imports: [CommonModule, FormsModule, NgbModule], 
    declarations: [ 
    FooComponent 
    ], 
    providers: [FooService], 
    exports: [ 
    CommonModule, 
    FormsModule, 
    FooComponent, 
    NgbModule 
    ] 
}) 
export class SharedModule {} 

的问题是,应该在哪里第三方模块去,如果他们要始终与保持基本应用程序模块“干净”通过使用CoreModule的目标应用程序的选择功能部件被重新使用和样式指南中演示的SharedModule。

谢谢!

回答

0

基于Angular2文档上,我会瘦朝着把东西像NG-引导在SharedModule:

SHAREDMODULE

可能转口其他部件模块,如CommonModule, FormsModule和使用最广泛的UI控件的模块

来源:https://angular.io/docs/ts/latest/cookbook/ngmodule-faq.html#!#q-module-recommendations

下面是一个例子共享模块,我在我的应用程序之一使用...剥离下来为简单起见:该导入SharedModule

import { NgModule } from '@angular/core'; 
import { CommonModule } from '@angular/common'; 
import { FormsModule } from '@angular/forms'; 

// Third Party Modules 
import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; 

@NgModule({ 
    imports: [ 
    CommonModule, 
    FormsModule, 
    NgbModule.forRoot() // Required for bootstrap module 
    ], 
    declarations: [], 
    exports: [ 
    CommonModule, 
    FormsModule, 
    NgbModule 
    ] 
}) 
export class SharedModule {} 

功能模块可以现在在他们的组件中使用ngb功能。

+1

看来,调用forRoot()不是NG团队推荐的。来自文档: '只能在根应用程序模块AppModule中调用并导入.forRoot结果。将它导入到任何其他模块中,特别是在延迟加载的模块中,与其意图相反,并且可能会产生运行时错误。来源[https://angular.io/docs/ts/latest/cookbook/ngmodule-faq的.html] –