我目前正在开发一个使用 ngx-leaflet 来使用传单的 Angular 6 应用程序。我们希望能够创建一个可以通过向其添加指令来定制的基础组件。基本上与使用leafletDraw 使用绘图功能时使用的模式相同。但是这些指令应该比leaflet 和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 /-->
这有两个挑战。
- 找到一种方法来了解更高级别的指令如何与较低级别的指令 (leafletDraw) 进行交互/配置 (poiSelection)。
- 如何动态添加指令。正如您在上面的OurNiceMapComponent 模板中看到的那样,我没有添加leafletDraw,因为它仅由特定的更高级别指令使用。
所以问题是,如何创建这些“高阶指令”。