3

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

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

它是如何工作的?

4

2 回答 2

7

你必须使用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 {
  ...
}

但是我想您想将纬度/经度传递给您的子组件,因为您可以在此处阅读与如何将数据从父组件传递到子组件相关的文档

于 2018-04-09T12:49:11.867 回答
0

我相当肯定,中间组件不会被渲染。这是一个无效的语法。

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

在“递归容器”组件的 html 中:

<agm-map ....

在 agm-map component.html 中:

<recursion-container"...

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

关于基本组件通信,您可以阅读文档

于 2018-04-09T12:41:50.073 回答