合并具有相同值的div

时间:2018-11-23 08:29:49

标签: html css angular

我正在尝试合并具有相同编号的div,以便查看星期及其编号。

enter image description here

这是我的html的样子

<div class="wrapper clearfix">
        <div class="left">
            <label class="kw">WeekNo.</label>
        </div>
        <div class="right week-number" *ngFor="let day of days">
            <label class="number-label"><span>{{day.weekNumber}} </span></label>
        </div>
    </div>

我必须使用*ngIf还是仅使用CSS? 我已阅读过此How to merge two divs,但不知道ti包含if语句的地方

这是我正在使用的课程

export class Day {
    number: number;
    weekDay: number;
    name: string;
    weekNumber: number;

    constructor(number: number, weekDay: number, name: string, weekNumber: number
       ) {
            this.number = number;
            this.weekDay = weekDay;
            this.name = name;
            this.weekNumber = weekNumber;
        }
}

这是合并后的外观 enter image description here

1 个答案:

答案 0 :(得分:0)

您可以通过创建groupBy管道并在项目中包含Bootstrap 4来通过以下方式进行操作。这是一个简单的演示示例(您必须进行样式设置)demo

groupby.pipe.ts

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({name: 'groupBy'})
export class GroupByPipe implements PipeTransform {
    transform(collection: any[], property: string): any[] {
        // prevents the application from breaking if the array of objects doesn't exist yet
        if(!collection) {
            return null;
        }

        const groupedCollection = collection.reduce((previous, current)=> {
            if(!previous[current[property]]) {
                previous[current[property]] = [current];
            } else {
                previous[current[property]].push(current);
            }

            return previous;
        }, {});

        // this will return an array of objects, each object containing a group of objects
        return Object.keys(groupedCollection).map(key => ({ key, value: groupedCollection[key] }));
    }
}

html代码

<div class="table table-borderless ">
  <div class="col-md-12 text-center border"><span>{{currentMonthName}}</span>&nbsp; <span>{{currentYear}}</span></div>

    <div class="d-flex">
      <div class=" text-center m-2 border" *ngFor="let day of days | groupBy:'weekNumber'">
        {{day.key}}
      <table class="table">
          <tbody>
            <tr>
              <th scope="row"  *ngFor="let x of day.value ">{{x.number}}</th>
            </tr>
            <tr>
              <th scope="row"  *ngFor="let y of day.value ">{{y.name}}</th>
            </tr>

          </tbody>
      </table>
      </div>
    </div>

</div>