2017-02-05 20 views
0

У меня есть проект с угловым 2 с 3 модулями. AppModule, общий модуль и ленивый загруженный модуль. Я хочу, чтобы оба модуля (lazy loaded и App) импортировали общий модуль, чтобы оба они могли использовать каналы и т. Д., Предоставляемые совместно используемым модулем. Это возможно?ленивая загрузка угловой модуль 2

Я попытался, но я получаю ошибки, сообщающие мне, что общий модуль уже загружен. И только загрузить его только в AppModule, но тогда ленивый загруженный модуль не имеет доступа к предоставленным элементам.

Я не понимаю угловые модули?

ответ

0

да, вы можете использовать долю NgModule как для ленивого и не ленивого модуля

приложения/Shared/shared.module.ts

import { NgModule } from '@angular/core'; 
import { MustSharedService } from './must-shared.service'; 

@NgModule({ 
    providers: [MustSharedService] 
}) 
export class SharedModule {} 

приложения/app.module.ts

import { SharedModule } from './shared/shared.module'; 

@NgModule({ 
    imports: [ 
    SharedModule, 
    ... 
    ], 
}) 
export class AppModule {} 

приложение/ленивые/lazy.module.ts

import { SharedModule } from '../shared/shared.module'; 

@NgModule({ 
    imports: [ 
    SharedModule, 
    ... 
    ], 
}) 
export class LazyModule {} 

оттуда любая услуга, например, предоставленная в SharedModule, будет доступна в обоих модулях.

см это демо https://plnkr.co/edit/L2ypUQZiltSPXnLlxBoa?p=preview

+0

Я хотел бы сослаться на [этой документации] (https://angular.io/docs/ts/latest/cookbook/ngmodule-faq.html#!#q- почему-плохо), чтобы указать, что это, вероятно, плохая идея предоставить услугу в SharedModule. Делая это, ваш AppModule и LazyModule будут иметь разные экземпляры MustSharedService, которые, вероятно, не то, что вы хотите. – Stephanie