2017-02-21 2 views
0

Угловое 2 ng-bootstrap указывает, что корневой модуль должен быть зарегистрирован в imports свойстве корня NgModule:Угловое 2 Bootstrap Root Уровень модуля

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

Когда после Angular 2 Styleguide бы она больше смысла в регистрации NgbModule в модуле shared или core? Если да, то каким образом можно выполнить forRoot() для этого стороннего модуля, чтобы я мог использоваться как часть SharedModule, импортированного в другие функциональные модули? Может ли он быть зарегистрирован как провайдер в CoreModule, но будет ли один сингл умным или даже возможным выбором для сторонней библиотеки, такой как ng-bootstrap?

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

Вопрос заключается в том, где следует 3-модули сторонних идти, если они будут повторно использоваться в течение некоторых художественных компонентов приложения с целью сохранения модуля базового приложения «чистый» за счет использования CoreModule и SharedModule, как показано в руководстве по стилю.

Спасибо!

ответ

0

На основе документации Angular2, я склоняюсь к положить вещи, как нг-загрузчике в SharedModule:

SHAREDMODULE

может реэкспорта другие модули виджетов, таких как CommonModule, FormsModule и модули с элементами управления пользовательского интерфейса, которые вы используете наиболее широко:.

Источник:https://angular.io/docs/ts/latest/cookbook/ngmodule-faq.html#!#q-module-recommendations

Вот пример Общий модуль, который я использую в одном из моих приложений ... разделась для простоты:

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 {} 

функциональных модулей, которые импортируют SharedModule может теперь используйте функции ngb в своих компонентах.

+1

Кажется, что вызов команды Root() не рекомендуется командой NG. From docs: 'Только вызов и импорт результата .forRoot в корневом прикладном модуле AppModule. Импорт его в любой другой модуль, особенно в ленивом модуле, противоречит намерению и, вероятно, приведет к ошибке выполнения. Источник [https://angular.io/docs/ts/latest/cookbook/ngmodule-faq .html] –

Смежные вопросы