В настоящее время я работаю над программой Angular 6, которая использует листовки ngx для использования листовки. Мы хотим создать базовый компонент, который можно настроить, добавив к нему директивы. В основном тот же шаблон, который используется при использовании возможностей рисования с использованием leafletDraw. Но эти директивы должны быть более абстрактными, чем директивы буклета и листовки.
В настоящее время мы получили следующий шаблон, который используется в нашем "базовом компоненте",
<div class="map" leaflet [leafletOptions]="options" [leafletLayers]="layers" [leafletOptions]="options" leafletDraw [leafletDrawOptions]="drawOptions" poiSelection [poiSelectionOptions]="selectionOptions"
poiSelection [trackPlaybackOptions]="trackOptions">
</div>
Как вы можете видеть, это может оказаться в большой стене директив на разных уровнях абстракции.
Я предпочитаю это:
<app-our-nice-map poiSelection [poiSelectionOptions]="selectionOptions" [trackPlaybackOptions]="trackOptions">
</app-our-nice-map>
И шаблон для компонента OurNiceMapComponent будет выглядеть так:
<div class="map" leaflet [leafletOptions]="options" [leafletLayers]="layers" [leafletOptions]="options">
</div><!-- this is here because Stackoverflow doesn't like single div /-->
В этом есть две проблемы.
- Поиск способа управления или настройки директивы более высокого уровня (poiSelection) с директивой нижнего уровня (leafletDraw).
- Как добавить директиву динамически. Как вы можете видеть в приведенном выше шаблоне для OurNiceMapComponent, я не добавил leafletDraw, потому что это используется только для определенной директивы более высокого уровня.
Поэтому вопрос заключается в том, как создавать эти "директивы высшего порядка".