如何根据元素数量添加传单地图

问题描述

我想在页面添加传单地图,条件是..

如果它是一个,它必须以整个宽度与引导网格列放置,如果它有两个它必须放置在具有相同列宽(例如 col-6)的行中,并且它是三个意味着它必须将两张地图放在一行中,将一张地图放在第二行中,整个宽度,

如果是五,则表示一排两张地图,第二排两张地图,第三排一张地图,整个宽度 (注意:来自后端的元素数量是动态的)

.component.ts

  
      for ( var j =0;j<this.sensorsarray.length;j++){

    var v= "map"+i+"";
    var  div=document.createElement("div");
    div.id = v;
      div.style="height:380px;";
                  console.log(v);
                
                  document.getElementById('mapper').appendChild(div);


// some code 
}

.component.html

<div class="row no-gutters">
      
     <div class="col-6" [ngClass]="{ 'col-12' : array.length %2 ==1 }">
        <div id="mapper"  style="height: 385px;border: 1px solid gray;"></div>  
   
        </div>
       
        
  </div>

任何人都可以帮我解决上述问题。

解决方法

以下代码将解决您的问题:

在 .ts 文件中定义了数组:

array = [1,2,3,4,5,6,7]

在 html 中

    <div class="row no-gutters">
    <div *ngFor="let item of array; let i=index;" 
        [ngClass]="i===(array.length-1) && (array.length % 2!==0) ? 'col-12' : 'col-6'">
        <div id="mapper"style="height: 385px;border: 1px solid gray;"></div>
    </div>
    </div>

对于您更新的问题,我认为这可以是解决方案:

for (var i = 0; i < this.sensorsarray.length; i++) {
      var v = "map" + i + "";
      var div = document.createElement("div");
      div.id = v;
      document.getElementById("mapper").appendChild(div);
      var map = document.getElementById("map" + i);
      map.style.height = "380px;";
      if (
        i === this.sensorsarray.length - 1 &&
        this.sensorsarray.length % 2 !== 0
      ) {
        map.classList.add("col-12");
      } else {
        map.classList.add("col-6");
      }
      // some code
    }

<div class="row no-gutters">
    <div class="w-100">
        <div id="mapper" style="height: 385px;border: 1px solid gray;" class="row"></div>
    </div>
</div>