2017-01-27 6 views
2

Я хочу получить метаданные для текущего NgModule, чтобы получить список declarations и providers, чтобы заполнить динамический модуль, который я создаю для отображения компонентов в модальном формате.Как я могу получить метаданные для текущего модуля в Angular 2?

Как это можно сделать?

ответ

1

Вы можете получить доступ к объявлениям, используя пакет reflect-metadata. Однако вам необходимо установить этот пакет и включить его в свой проект. После этого вы можете получить аннотации, как это:

let annotations: DecoratorFactory[] = Reflect.getMetadata('annotations', ModuleClass); 

Если @NgModule является единственной аннотацией там, что я предполагаю, что это, вы можете получить доступ к декларации, как это, в противном случае вы должны угадать право index :

let declarations: any[] = annotations[0].declarations; 

Смотрите эту answer для дальнейшего использования

+0

А что, если я хочу, чтобы получить текущий модуль, не зная, какой он? –

+0

К сожалению, нет такой вещи, как текущий модуль. Потому что ваше приложение может состоять из нескольких «NgModules» сразу. Что вы пытаетесь сделать точно? – PierreDuc

+0

Если вы можете дать реализацию plnkr.co, это будет здорово –