Модули и ленивая загрузка угловая - PullRequest
0 голосов
/ 04 декабря 2018

Я работаю с Ionic, и у меня есть IonicPage, называемый Login с соответствующими файлами (login.html, login.module.ts, login.scss, login.ts)

В файле login.module.ts, который я определяю в провайдерах массива для некоторых файлов Provider и Serviceкоторый я использую только при входе в систему, поэтому я не добавляю их в app.module.ts, и это очень хорошо работает для меня

@NgModule({
  declarations: [
    LoginPage
  ],
  imports: [
    HttpModule,
    IonicPageModule.forChild(LoginPage)
  ],
  entryComponents: [
    LoginPage
  ],
  providers: [
    settingsProvider,
    accessProvider,
    accessService
  ]
})

С другой стороны, у меня есть модуль под названием QuestionsModule, который состоит изЕще 3 модуля, Questions1Module, Questions2Module и Questions3Modules

Где у меня в основном модуле:

@NgModule({
  imports: [
    Questions1Module,
    Questions2Module,
    Questions3Modules,
  ],
  providers: [
    questionService,
    questionProvider
  ]
})
export class QuestionsModule {}

Из того, что я подумал, при добавлении в массив провайдеровдругие импортированные модули могут использовать мои импортированные Providers и Services, но я обязан, например, в модуле Questions1Module снова добавить в @NgModule объявление массива Providers

@NgModule({
  declarations: [
    Questions1Page,
  ],
  imports: [
    IonicPageModule.forChild(Questions1Page),
  ],
  entryComponents: [
    Questions1Page
  ],
  providers: [
    questionService,
    questionProvider
  ]
})

Если это правильный способ сделать это, какой смысл импортировать его 2 раза в разные части, чтобы использовать провайдеров?, Еще один из моих сомнений заключается в том, что в моем app.module.ts в массиве импорта яобъявили:

imports: [
  BrowserModule,
  LoginModule,
  IonicModule.forRoot(MyApp, { mode: 'ios', backButtonText: '' }),
  HttpClientModule,
],

И если вы видите, это нМне не нужно добавлять QuestionsModule, но если LoginModule, если оба сгенерированы IonicPageModule, почему эта разница?

1 Ответ

0 голосов
/ 04 декабря 2018

Лучшим подходом является создание файла с именем, подобным shared.module.ts, и там вы определяете questionService и questionProvider или любой другой компонент, службу ..., которую вы будете использовать более одного раза в 2 разных модулях,

shared.module.ts

@NgModule({
   declarations: [],
   imports: [],
   entryComponents: [],
   providers: [
      QuestionService,
      QuestionProvider
   ]
});

Модуль, в котором вы хотите использовать что-то из shared.module.ts

@NgModule({
   declarations: [
      Questions1Page
   ],
   imports: [
      IonicPageModule.forChild(Questions1Page),
      SharedModule // this module will import the QuestionService and other..
   ],
   entryComponents: [
      Questions1Page
   ],
   providers: []
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...