组件内部组件Angular

时间:2018-04-09 12:28:29

标签: angular ng-template

当一个组件在另一个组件内时,它叫什么? 喜欢在

<agm-map [latitude]="lat" [longitude]="lng">
  <agm-marker [latitude]="lat" [longitude]="lng"></agm-marker>
</agm-map>

它是如何工作的?

2 个答案:

答案 0 :(得分:1)

您必须使用ng-content

<ng-content></ng-content>
<ng-content select="agm-marker"></ng-content>

您必须将两个组件声明为:

AGM-map.component.ts

@Component({
    selector: 'agm-map',
    template: '<ng-content></ng-content>
            <ng-content select="agm-marker"></ng-content>'
})
export class AgmMapComponent {
  ...
}

AGM-marker.component.ts

@Component({
    selector: 'agm-marker',
    template: '<div>Marker</div>'
})
export class AgmMarkerComponent {
  ...
}

但我想你想将纬度/经度传递给你的子组件,因为你可以阅读有关如何将数据从父组件传递到子组件的文档here

答案 1 :(得分:0)

我很确定,中间组件不会被渲染。这是一个无效的sytax。

但是,您可以使用至少2个不同的组件创建递归组件模式,如下所示:

在“recursion-container”组件的html中:

<agm-map ....

在agm-map component.html中:

<recursion-container"...

所以你基本上需要一个中间层。

关于基本组件通信,you can read the documentation