Использование нескольких пользовательских модулей в Angular 2 (RC5)

Я обновил постоянно растущее приложение ng2 для RC5 и наложил все мои компоненты/трубы на один жирный основной модуль. Чтобы бороться с раздуванием, я пытался вырезать свое приложение в отдельные модули (также с прицелом на то, чтобы в конечном итоге делать ленивую загрузку).

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

мой-shared.module.ts

import { NgModule }      from "@angular/core";
import { BrowserModule } from "@angular/platform-browser";
import { FormsModule } from "@angular/forms";
import { provideForms, disableDeprecatedForms } from"@angular/forms";

import { TabBarWidgetComponent } from "./tabBarWidget/tabbar-widget.component";
import { MyDatepickerComponent } from "./mykDatePicker/my-datepicker.component";
import { CalendarSelectorComponent } from "./calendarSelector/calendar-selector.component";
import { AccordionTabComponent } from "./accordionTab/accordion-tab.component";


@NgModule({
  imports: [
      BrowserModule,
      FormsModule
  ],
  declarations: [
      TabBarWidgetComponent,
      MyDatepickerComponent,
      CalendarSelectorComponent,
      AccordionTabComponent

  ],
  providers: [
      provideForms(),
      disableDeprecatedForms()
  ]

})
export class MySharedModule { }

Ответ 1

Попробуйте добавить раздел exports в общий модуль.

import { NgModule }      from "@angular/core";
import { BrowserModule } from "@angular/platform-browser";
import { FormsModule } from "@angular/forms";
import { provideForms, disableDeprecatedForms } from"@angular/forms";

import { TabBarWidgetComponent } from "./tabBarWidget/tabbar-widget.component";
import { MyDatepickerComponent } from "./mykDatePicker/my-datepicker.component";
import { CalendarSelectorComponent } from "./calendarSelector/calendar-selector.component";
import { AccordionTabComponent } from "./accordionTab/accordion-tab.component";


@NgModule({
  imports: [
      BrowserModule,
      FormsModule
  ],
  exports: [
      TabBarWidgetComponent,
      MyDatepickerComponent,
      CalendarSelectorComponent,
      AccordionTabComponent
  ],
  declarations: [
      TabBarWidgetComponent,
      MyDatepickerComponent,
      CalendarSelectorComponent,
      AccordionTabComponent
  ],
  providers: [
      provideForms(),
      disableDeprecatedForms()
  ]

})
export class MySharedModule { }

Ответ 2

попробуйте изменить порядок компонентов, проверьте эту ссылку для более подробной информации

рассмотрите, было ли у вас пять компонентов в вашей программе, A B C D E. Если для пример компонента A используемый компонент B в его шаблоне, а компонент B используемый компонент C в его шаблоне и т.д., тогда зависимости между этими компонентами A- > B, B- > C, C- > D, D- > E, E- > F. В этом случае правильный порядок их перечисления в объявлениях будет объявления: [E, D, C, B, A].