Angular2更改检测:ngOnChanges未针对嵌套对象触发
我知道我不是第一个问这个的人,但我在前面的问题中找不到答案。我有一个组件
<div class="col-sm-5"> <laps [lapsData]="rawLapsData" [selectedTps]="selectedTps" (lapsHandler)="lapsHandler($event)"> </laps></div><map [lapsData]="rawLapsData" class="col-sm-7"></map>
在控制器中rawLapsdata
不时变异。
在laps
,数据以表格格式输出为HTML。每当rawLapsdata
发生变化时,这都
我的map
组件需要ngOnChanges
用作在Google地图上重绘标记的触发器。问题是当rawLapsData
父项中的更改时,ngOnChanges不会触发。我能做什么?
import {Component, Input, OnInit, OnChanges, SimpleChange} from 'angular2/core';@Component({ selector: 'map', templateUrl: './components/edMap/edMap.html', styleUrls: ['./components/edMap/edMap.css']})export class MapCmp implements OnInit, OnChanges { @Input() lapsData: any; map: google.maps.Map; ngOnInit() { ... } ngOnChanges(changes: { [propName: string]: SimpleChange }) { console.log('ngOnChanges = ', changes['lapsData']); if (this.map) this.drawMarkers(); }
更新: ngOnChanges不起作用,但看起来好像正在更新lapsData。在ngInit中,还有一个用于缩放更改的事件侦听器,它也会调用this.drawmarkers
。当我改变变焦时,我确实看到了标记的变化。所以唯一的问题是我在输入数据发生变化时没有收到通知。
在父母,我有这条线。(回想一下,变化反映在圈数中,但不反映在地图中)。
this.rawLapsData = deletePoints(this.rawLapsData, this.selectedTps);
请注意,this.rawLapsData
它本身是指向大型json对象中间的指针
this.rawLapsData = this.main.data.TrainingCenterDatabase.Activities[0].Activity[0].Lap;
米琪卡哇伊
宝慕林4294392
慕斯王
相关分类