当我将鼠标悬停在其他组件中的某个元素上时,我正在尝试动态更改Google标记的颜色。 我还在学习Angular,我尝试使用Observables但没有任何成功。
我有main.view
组件存储所有卡片(我称之为事件)。以下是main-view.component.ts
代码的一部分:
constructor( private eventService: EventsDataService) {
}
ngOnInit() {
this.getEvents();
}
我正在注入从服务器获取我的卡数据的服务,并使用getEvents
方法使用Observable将其转换为JSON数据。然后我在html
模板中使用2 * ngFor指令迭代这些数据并填充卡片和标记。这是代码:
main-view.component.html
<app-event-card *ngFor="let event of events; let i = index"></app-event-card>
</section>
<aside class="mapContainer" [class.fixed]="fixed">
<agm-map [class.fixed]="fixed" [latitude]= "latitude" [longitude]="longitude" >
<agm-marker *ngFor="let event of events; let i = index"
[latitude]= "event.location.coordinates[0]"
[longitude]="event.location.coordinates[1]"
label="{{event.price +'AUD'}}">
</agm-marker>
</agm-map>
</aside>
现在,当我将鼠标悬停在与标记对应的其中一张卡片上时,我想更改标记的颜色或任何属性,但我不知道如何为这两个组件连接数据。
感谢您就此问题提供任何帮助或提示。
由于
答案 0 :(得分:2)
我不知道您的组件是什么样的,但您需要的只是:
<app-event-card (mouseenter)="event.hovered = true" (mouseleave)="event.hovered = false" *ngFor="let event of events; let i = index"></app-event-card>
<aside ...>
<agm-map ...>
<agm-marker *ngFor="let event of events; let i = index"
...
[color]="event.hovered ? 'blue' : 'red'">
</agm-marker>
</agm-map>
</aside>
答案 1 :(得分:1)
地图外的标记列表
<ul><li *ngFor="let data of markers" (mouseenter)="updateColor(data.lat)" (mouseleave)="updateColorR(data.lat)">{{data.lat}}</li></ul>
标志物
<agm-marker
*ngFor="let m of markers; let i = index"
(markerClick)="clickedMarker(m.label, i)"
[latitude]="m.lat"
[longitude]="m.lng"
[markerDraggable]="m.draggable"
[iconUrl]="m.icon"
(dragEnd)="markerDragEnd(m, $event)">
成分</ P>
updateColor(data:any){
this.markers.map((el,i)=>{
if(el.lat==data){
this.markers[i].icon='https://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=%E2%80%A2|4286f4';
}
})
}
updateColorR(data:any){
this.markers.map((el,i)=>{
if(el.lat==data){
this.markers[i].icon='https://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=%E2%80%A2|FF0000';
}
})
}