Сделайте компонент, директиву и трубу общедоступными и используйте их вне модуля

Как сделать компонент, директиву и трубу общедоступными? Это потому, что когда я добавляю их в массив объявлений в модуле, они становятся видимыми везде в модуле, где они объявлены, и являются частными для модуля. Если я должен использовать вне модуля, что должно быть сделано.

2 ответа

Решение

Вы можете использовать общий модуль, который отвечает за обмен common components, pipes and directives,
обратите внимание, это просто соглашение об именах, чтобы использовать sharedModule or coreModule , но вы можете использовать любое другое имя модуля eg xyzModule , Важным моментом является то, что общие вещи объявляются внутри export array

import { NgModule }            from '@angular/core';
import { CommonModule }        from '@angular/common';

import { CustomComponent}  from 'path';
import { CustomPipe}       from 'path';
import { CustomDirective}  from 'path';

@NgModule({
  imports:      [ CommonModule ],
  declarations: [ CustomComponent, CustomPipe, CustomDirective],
  exports:      [ CustomComponent, CustomPipe, CustomDirective]
})
export class SharedModule { }

Используйте его в App/Root Module или любой другой функции или в лениво загруженном функциональном модуле, подобном этому,

AppModule Или скажем так ClientModule

import {SharedModule } from 'path'

@NgModule({

   imports: [..., sharedModule]

})

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

 exports:      [ CustomComponent, CustomPipe, CustomDirective]

Тогда любой другой модуль, который реализует этот модуль, будет иметь доступ к этим вещам

Другие вопросы по тегам