使用 *ngfor创建的html表,填充了一个单独的 *ngfor,最后一列以包含 *ngif



新的堆栈溢出且相当新的角 - 例如中间级别。

因此,我有一个问题,即我使用 *ngfor循环来创建和填充HTML表的前三列,然后我想使用单独的 *ngfor条件来通过Firestore的文档集合来循环数据库填充表的行,在该表中满足特定条件,直到最后一列我想要如果应用于适用于内容的两个选项之一。

混淆只用单词来描述,所以这里有一些代码可以绘制更好的图片:

JSON用于创建HTML表:

tables: any [] = [
    {
      'time': 1200,
      'number': 1,
      'covers': 2
    },
    {
      'time': 1200,
      'number': 2,
      'covers': 2
    },
    {
      'time': 1200,
      'number': 3,
      'covers': 2
    },
    {
      'time': 1230,
      'number': 1,
      'covers': 2
    },
    {
      'time': 1230,
      'number': 2,
      'covers': 2
    },
    {
      'time': 1230,
      'number': 3,
      'covers': 2
    },
    {
      'time': 1300,
      'number': 3,
      'covers': 2
    },
    {
      'time': 1300,
      'number': 1,
      'covers': 2
    },
    {
      'time': 1300,
      'number': 2,
      'covers': 2
    },
    {
      'time': 1300,
      'number': 3,
      'covers': 2
    }
    ];

HTML表过滤固定是Firestore返回的文档集合的数组

    <table class="table">
            <thead>
            <th>Time</th>
            <th>Table</th>
            <th>Covers</th>
            <th>Name</th>
            <th>Contact</th>
            <th>Created By</th>
            <th>Status</th>
            <th>Actions</th>
            </thead>
            <tbody>
            <tr *ngFor="let table of tables">
              <td>{{table.time}}</td>
              <td>{{table.number}}</td>
              <ng-container *ngFor="let reservation of filteredReservations">
            <ng-container *ngIf="table.time == reservation.time && table.number == reservation.table">
              <td>{{reservation.covers}}</td>
              <td>{{reservation.name}}</td>
              <td>{{reservation.contact}}</td>
              <td>{{reservation.createdBy}}</td>
              <td>{{reservation.status}}</td>
              <ng-container>
                <td *ngIf="table.time == reservation.time && table.number == reservation.table; else empty">
                  <button mat-icon-button [routerLink]="['/new', reservation.id]">
                    <mat-icon>edit</mat-icon>
                  </button>
                </td>
              </ng-container>
            </ng-container>
          </ng-container>
            </tr>
            </tbody>
          </table>      
<ng-template #empty>
        <td>
          <button mat-icon-button [routerLink]="['/new']">
            <mat-icon>edit</mat-icon>
          </button>
        </td>
</ng-template>

预期的结果是将使用第一个 *ngfor创建HTML表,过滤固定将出现在满足条件的行中,最后一列将显示一个编辑图标,该图标将链接到添加新的预订或编辑现有情况满足条件的地方。

当我尝试实现我的目标是最后一列重复的目标时,与集合中的文档一样多次重复。条件。

我的目标是:1

我目前得到的:2

我试图尽可能最好地解释这是有意义的。

我不会在HTML中进行迭代。更喜欢在component.ts中这样做:

 <tbody>
  <tr *ngFor="let table of tables" >
    <td>{{table.time}}</td>
    <td>{{table.number}}</td>
    <ng-template let-reservation="findReservation(table)">
      <td>{{reservation.covers}}</td>
      <td>{{reservation.name}}</td>
      <td>{{reservation.contact}}</td>
      <td>{{reservation.createdBy}}</td>
      <td>{{reservation.status}}</td>
      <td *ngIf="reservation">
        <button mat-icon-button [routerLink]="['/new', reservation.id]">
          <mat-icon>edit</mat-icon>
        </button>
      </td>
    </ng-template>    
  </tr>
</tbody>

findReservation(table: Table): Reservation {
  return this.filteredReservations.find(reservation => {/*your check*/})
}

相关内容

  • 没有找到相关文章

最新更新