转换嵌套的子元素

时间:2017-07-11 13:34:14

标签: angularjs angularjs-directive angularjs-components angularjs-ng-transclude transclusion

我正在编写一组地图组件,我的一个组件需要在地图标记鼠标悬停时显示弹出窗口。这由mapMarkerPopup内的mapMarkers处理。

不幸的是,这不起作用。我认为这是因为我试图使用的翻译插槽不在直接父节点中。这是为什么?另外,如果这就是为什么我可以做些什么呢?

注1 由于地图的工作方式任何可见的[非地图] HTML必须放在ui-gmap-google-map指令之外

注意2 mapClickHandlermapMarkerPopup的工作类似,但是地图组件的直接子项并且有效。但是mapMarkerPopup我遇到了问题。

以下是整体HTML的外观

<my-map>
    <map-click-handler>...</map-click-handler>
    <map-markers></map-markers>
</my-map>

以下是如何设置组件,仅显示相关部件。

myMap.html

<ui-gmap-google-map>
    <ng-transclude></ng-transclude>
</ui-gmap-google-map>

<ng-transclude ng-transclude-slot="mapClickHandler"></ng-transclude>
<ng-transclude ng-transclude-slot="mapMarkerPopup"></ng-transclude>

myMap.component.ts

this.transclude = {
    "mapClickHandler": "?mapClickHandler",
    "mapMarkerPopup": "?mapMarkerPopup"
}

请注意,map-click-handler直接放置在正确转录的<my-map>组件内。所以我知道一个直接的孩子正确地换了。

mapMarkers.html

<ui-gmap-markers></ui-gmap-markers>
<map-marker-popup></map-marker-popup>

0 个答案:

没有答案