在我的代码中,我有一个名为#map的div,它将在for循环的条件之后显示。
<div *ngFor="let message of fullMessagesArr">
<div *ngIf="message.replyMap">
<div #gmap style="width:100px;height:400px"></div>
</div>
</div>
下面通过initMap
函数给出的.ts文件。
@ViewChild('gmap') gmapElement: ElementRef;
map: google.maps.Map;
initGMap = () => {
const mapProp = {
center: new google.maps.LatLng(6.9404, 79.8464),
zoom: 15,
mapTypeId: google.maps.MapTypeId.satellite
};
this.map = new google.maps.Map(this.gmapElement.nativeElement, mapProp);
}
initGMap
函数在sendMessage
函数内部被调用。
答案 0 :(得分:1)
似乎您正在尝试对DOM尚不可见的元素进行访问,因此您可以执行以下操作:运行setTimeOut或使用ngAfterContentInit生命周期挂钩来等待DOM呈现
export class AppComponent implements OnInit, OnDestroy, AfterContentInit {
public ngAfterContentInit(): void {
const mapProp = {
center: new google.maps.LatLng(6.9404, 79.8464),
zoom: 15,
mapTypeId: google.maps.MapTypeId.satellite
};
this.map = new google.maps.Map(this.gmapElement.nativeElement, mapProp);
}
}
或使用setTimeOut
initGMap = () => {
const mapProp = {
center: new google.maps.LatLng(6.9404, 79.8464),
zoom: 15,
mapTypeId: google.maps.MapTypeId.satellite
};
setTimeout(() => {
this.map = new google.maps.Map(this.gmapElement.nativeElement, mapProp);
}, 3000);
}