2017-02-21 64 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] –