我的问题是,当我使用*ngIf
来控制我的分区时,osmLayer
和satelliteLayer
都会消失(迷你地图),似乎*ngIf
会阻止它,这里是我的代码:
<div *ngIf="fruitionMap.backgroundType !== 'UNICOLOR'"
(mouseenter)="displayBackgroundMode=true"
(mouseleave)="displayBackgroundMode=false">
<a (click)="changeBackground('OSM')"
matTooltip="{{ 'Map' | translate }}" [matTooltipPosition]="'left'"
[style.display]="(fruitionMap?.backgroundType === 'OSM')?'none':''">
<div id="miniMapOSM"></div>
</a>
<a (click)="changeBackground('SATELLITE')"
matTooltip="{{ 'Satellite' | translate }}"
[matTooltipPosition]="'left'"
[style.display]="(fruitionMap?.backgroundType === 'SATELLITE')?'none':''">
<div id="miniMapSatellite"></div>
</a>
<div *ngIf="displayBackgroundMode">
<a (click)="changeBackground('UNICOLOR')"
matTooltip="{{ 'Unicolor' | translate }}"
[matTooltipPosition]="'left'"
[style.display]="(fruitionMap?.backgroundType === 'UNICOLOR')?'none':''">
<div id="miniMapUnicolor"></div>
</a>
</div>
</div>
=============================================== =====================
const satelliteLayer = new ol.layer.Tile({
preload: Infinity,
source: new ol.source.BingMaps({
key: MapSettings.bingKey,
imagerySet: 'Aerial',
maxZoom: 19,
}),
});
const osmLayer = new ol.layer.Tile({
source: new ol.source.OSM()
});
new ol.Map({
target: 'miniMapSatellite',
layers: [satelliteLayer],
logo: false,
view: this.mainView,
});
new ol.Map({
target: 'miniMapOSM',
layers: [osmLayer],
logo: false,
view: this.mainView,
});
请帮忙:)
答案 0 :(得分:0)
在这些情况下,我会在我的控制器中使用一个函数来记录问题。如果您的图层消失,那肯定会更多,因为您的代码评估为FALSE
而不是ol3问题。
实施例: 替换:
<div *ngIf="fruitionMap.backgroundType !== 'UNICOLOR'">
由:
<div *ngIf="debugBackground();">
并在控制器中:
function debugBackground() {
console.log(fruitionMap.backgroundType);
console.log(fruitionMap.backgroundType !== 'UNICOLOR');
return fruitionMap.backgroundType !== 'UNICOLOR';
}
看看发生了什么。
此外:我不确定此代码[style.display]="(fruitionMap?.backgroundType === 'UNICOLOR')?'none':''">
是否有效。你不加一个额外的'?
'吗?