Google maps 角度-是否可能破坏组件(非动态创建)?

Google maps 角度-是否可能破坏组件(非动态创建)?,google-maps,angular,angular-google-maps,Google Maps,Angular,Angular Google Maps,我正在使用我们的一个应用程序。我们使用套接字每5秒加载一次标记。问题是当从套接字接收新标记时,需要删除以前的标记。官方网站上没有合适的文件。因此,我们考虑从应用程序组件中销毁组件。我们得到了所有的子组件,找到下面的代码 从'@angular/core'导入{Component,OnInit,ViewChild,ViewChildren,QueryList}; 从“ng2套接字io”导入{Socket}; 从“./google map”导入{Marker}; 从“angular2 google

我正在使用我们的一个应用程序。我们使用套接字每5秒加载一次标记。问题是当从套接字接收新标记时,需要删除以前的标记。官方网站上没有合适的文件。因此,我们考虑从应用程序组件中销毁组件。我们得到了所有的子组件,找到下面的代码

从'@angular/core'导入{Component,OnInit,ViewChild,ViewChildren,QueryList};
从“ng2套接字io”导入{Socket};
从“./google map”导入{Marker};
从“angular2 google maps/core”导入{SebmGoogleMapMarker};
@组成部分({
选择器:“应用谷歌地图”,
templateUrl:'./google map.component.html',
样式URL:['./google map.component.scss'],
提供者:[SebmGoogleMapMarker]
})
导出类GoogleMapComponent实现OnInit{
公共lat:数字=51.678418;
公共液化天然气:数量=7.809007;
公共标记:标记[]=[];
@ViewChildren(SebmGoogleMapMarker)SebmGoogleMapMarkers:QueryList;
构造函数(私有套接字:套接字){}
恩戈尼尼特(){
this.socket.on('markers',this.setMarkers);
}
setMarkers=(数据:Marker[])=>{
这是。removeMarkers();
for(让数据标记){
var模型=新标记(标记);
这个.markers.push(模型);
}
}
移除标记(){
如果(this.sebmgooglemapmarks.length>0){
this.sebmgooglemapmarks.forEach((ele)=>{
ele.ngondestory();
});
}
}
}

据我所知,无法销毁未动态添加的组件。您可以使用
*ngIf
删除组件,但:

<sebm-google-map-markers *ngIf="show">


您还可以创建自己的
*ngIf
变体,例如,该变体包含在不再需要时移除组件的逻辑。创建这样一个结构指令非常简单()

实际上是ele.ngondstroy();这是从标记中删除标记。我担心的是.SebmGoogleMapMarkers.length每5秒增加一次
ngondstroy()
不应该由您的代码调用。显然,该组件不会被正确销毁。也许使用
*ngFor
创建
SebmGoogleMapMarker
组件是一种可行的方法。您只需要更新数组
*ngFor
迭代,当数组中的项被删除时,与数组中的项关联的组件将被删除。是的,我不应该从代码中调用ngOnDestroy()。为您的参考添加了html。谢谢你的回复,我明白了。因此,更新
标记
数组应该是一种方法。