Javascript angular2 datatable无法更新数据
在datatable呈现之后,我无法更新数据。 我使用的是angular2数据表 在my appcomponent.html中: 如果我像这样更新appcomponent.ts文件中的数据2:Javascript angular2 datatable无法更新数据,javascript,google-maps,angular,typescript,datatable,Javascript,Google Maps,Angular,Typescript,Datatable,在datatable呈现之后,我无法更新数据。 我使用的是angular2数据表 在my appcomponent.html中: 如果我像这样更新appcomponent.ts文件中的数据2: this.httpservice.getdata().subscribe (data=> { this.data2=data; for (i = 0; i < 21; i++) { markerarray[i] = new google.maps.Marker({
this.httpservice.getdata().subscribe
(data=>
{ this.data2=data;
for (i = 0; i < 21; i++) {
markerarray[i] = new google.maps.Marker({
position: new google.maps.LatLng(this.data2[i].latituide, this.data2
[i].longituide), //In this line
title: this.data2[i].name, //and this
map: map
});
}
google.maps.event.addListener(map, 'idle', function () {
var bounds = map.getBounds();
for (var i = 0; i < 20; i++) {
var marker = markerarray[i];
if (bounds.contains(marker.getPosition()) === true) {
this.data2.length=0;// This is not working for me
}
}
});
})
this.httpservice.getdata().subscribe
(数据=>
{this.data2=数据;
对于(i=0;i<21;i++){
markerarray[i]=新的google.maps.Marker({
位置:new google.maps.LatLng(this.data2[i].latituide,this.data2
[i] .longituide),//在此行中
标题:this.data2[i].name、//和这个
地图:地图
});
}
google.maps.event.addListener(映射'idle',函数(){
var bounds=map.getBounds();
对于(变量i=0;i<20;i++){
var marker=markerary[i];
if(bounds.contains(marker.getPosition())==true){
this.data2.length=0;//这对我不起作用
}
}
});
})
我想在标记绑定后清空datatable。我想出了一个解决方案,尽管我不确定这是否是最好的方法 我使用ChangeDetectorRef来检测更改
constructor(private http: Http,private httpservice: HttpService,private ref: ChangeDetectorRef) {
ref.detach();
setInterval(() => {
this.ref.detectChanges();
},1000);
}
尝试执行此操作。data2=[]使用
箭头函数
保留此
而不是函数{
@JuliaPapsynkova我尝试了此操作。但它仍然没有更新:(@yurzui我尝试使用胖箭头函数。但表仍然没有更新。如果您对http中的所有代码进行注释,请订阅并执行此操作。data2=[],是否有效?显示u绑定到datatable。这可能会影响应用程序每秒执行检测更改的性能。此外,您需要删除OnDesctroy中的间隔-否则内存泄漏。@JuliaPassynkova哦,好的。您有其他解决方案吗?我想不出任何其他方法。我经常使用datatable,并且可以修改push changes。如果您认为更改检测有问题,请在更改数据2后尝试执行“setTimeout(()=>{window.dispatchEvent(新事件('resize'));})”。