Я использую AGM (Angular Google Maps) и хочу создать набор моих собственных пользовательских компонентов, которые обертывают компоненты AGM, чтобы обеспечить многократное использование в моем приложении.
Однако, когда я это делаю, маркеры (в этом примере) не отображаются на карте, но я не получаю ошибок. Интересно, связано ли это с вложением компонентов в <ng-content>
Кто-нибудь может помочь? У меня есть настройка stackblitz. Пожалуйста, смотрите обновления внизу для Angular 7 Stackblitz, используя Slot
.
TL; DR: когда у меня есть вложенные пользовательские компоненты, он создает ng-content
посредника элемента HTML, который, кажется, нарушает agm
функциональность.
Мой основной компонент - vmap
@Component({
selector: "v-map",
template: `<agm-map flex [latitude]="lat" [longitude]="lng">
<ng-content></ng-content>
<!--agm-marker [latitude]="lat" [longitude]="lng"></agm-marker-->
</agm-map>`
})
export class VMapComponent {
lat: number = 51.678418;
lng: number = 7.809007;
constructor(private loader: MapsAPILoader) {
}
}
Обратите внимание, что если я оставлю комментарий в agm-marker
в шаблоне, он отобразится. Только кажется, что не работает в ng-content
.
Вот подкомпонент v-map-plots
@Component({
selector: "v-map-plots",
template: `<agm-marker *ngFor="let plot of plots" [latitude]="plot.Latitude" [longitude]="plot.Longitude"></agm-marker>`
})
export class VMapPlotsComponent {
@Input() plots: IPlot[] = [];
constructor(@Host() private parent: VMapComponent) {
this.plots.push({ Latitude: 51.678418, Longitude: 7.809007 })
}
}
Это проблема AGM или проблема с Angular? Это связано с ng-content
? Есть ли способ обойти это?
Обновление Согласно комментарию @ Anytoe, вот мой вариант использования:
<v-map>
<v-map-plots [plots]="displayPlots"></v-map-plots>
</v-map>
Идея в том, что я могу создать несколько повторно используемых компонентов карт, которые затем можно будет повторно использовать в своем приложении, где это необходимо.
Обновление 2. Я читал о слоте и подумал, что это может мне помочь, поэтому настройте новый Stackblitz для Angular 7 и использовал слот, но также не смог заставить это работать
ng-content
. Если я не использую это, графики даже не отображаются в разметке. Если есть другой способ сделать это, дайте мне знать :) - person Chris   schedule 05.11.2018v-map-plots
был вложен непосредственно подv-map
, а не внутри шаблона (по сути, код черезapp.component.html
), если это имеет смысл, не стесняйтесь размещать свой stackblitz :) - person Chris   schedule 05.11.2018