Angular 4 Mapbox通过ngFor创建多个地图
Angular 4 Mapbox create multiple maps by ngFor
我正在尝试使用 *ngFor
创建多个地图,但在我将其分配给 mapbox 的容器变量之前,组件 div 中的 id 必须准备就绪。不幸的是,如果不使用 setTimeout,它会抛出地图 ID 未定义的错误。
我的组件 html 看起来像这样 -
<div class="css-map-custom" id="map{{mv_mapId}}"></div>
对应的打字稿是 -
this.map = new mapboxgl.Map({
container: `map${this.mv_mapId}`, .....
并且由于 "div id not found" 错误,我必须将地图渲染函数放在带有 setTimeout 的 ngOnInit 中:(
关于如何以更优雅的方式修复它的任何线索?
如果您需要在 "page load" 上访问 DOM,您应该使用 ngAfterViewInit 而不是 ngOnInit。
简而言之,这是事件的顺序:
构造器 > ... ngOninit > ... 模板创建 > ... ngAfterViewInit
我正在尝试使用 *ngFor
创建多个地图,但在我将其分配给 mapbox 的容器变量之前,组件 div 中的 id 必须准备就绪。不幸的是,如果不使用 setTimeout,它会抛出地图 ID 未定义的错误。
我的组件 html 看起来像这样 -
<div class="css-map-custom" id="map{{mv_mapId}}"></div>
对应的打字稿是 -
this.map = new mapboxgl.Map({
container: `map${this.mv_mapId}`, .....
并且由于 "div id not found" 错误,我必须将地图渲染函数放在带有 setTimeout 的 ngOnInit 中:(
关于如何以更优雅的方式修复它的任何线索?
如果您需要在 "page load" 上访问 DOM,您应该使用 ngAfterViewInit 而不是 ngOnInit。
简而言之,这是事件的顺序:
构造器 > ... ngOninit > ... 模板创建 > ... ngAfterViewInit