【问题标题】:Angular 4: Add empty table rows dynamically into tableAngular 4:将空表行动态添加到表中
【发布时间】:2018-03-15 19:10:44
【问题描述】:

我有一张桌子,每个 td 都有一张桌子,它被放置在这样的组件中

<tr *ngFor="let row of data">
    <td>
        <custom-table [tableData]="row.rec?.observations" [maxLengthArray]="maxLengthArray"></custom-table>
    </td>
    <td>
        <custom-table [tableData]="row.rec?.gaps" [(maxLengthArray)]="maxLengthArray"></custom-table>
    </td>
    <td>
        <custom-table [tableData]="row.rec?.recommendation" [(maxLengthArray)]="maxLengthArray"></custom-table>
    </td>

自定义表格组件是

<table style="border-collapse: collapse;">
    <tr *ngFor="let rec of tableData">
        <td>{{rec}}</td>
    </tr>
</table>

组件

export class CustomTableComponent implements OnInit {

    @Input() public tableData: any;
    @Input() public maxLengthArray: number[];
    public tdLeangth: number = 0;

    public ngOnInit() {
      let len = this.maxLengthArray[0] - this.tableData.length;
      while (len === 0) {
          this.tableData.push('');
          len--;
      }
   }
}

maxLengthArray 具有自定义表格组件可以拥有的最大行数,我想将空行添加到计数小于最大长度的自定义表格中。但是每次 ngOnInit 都会被调用,并且只有最后一列有空行。如何解决这个问题?

【问题讨论】:

  • 最后一列有空行是什么意思?

标签: angular


【解决方案1】:

您可以在“输入”中使用 getter 和 setter 在输入中进行操作

_tableData:any
_maxLenghtArray:number[0]
@Input()
  set tableData(value) {
    this._tableData=value;
    if (this._maxLenghtArray)
         this.addRows()
  }
  get tableData()
  {
     return this._tableData;
  }
@Input()
  set maxLenghtArray(value) {
    this._maxLenghtArray=value;
    if (this._tableData)
        this.addRows()

  }
  get maxLenghtArray()
  {
     return this._maxLenghtArray;
  }

addRows()
{
   while (this.tableData.lenght<this.maxLengthArray[0])
       this.tableData.push('');
}

【讨论】:

  • 为什么我要在两个 Input set 方法中调用两次?
  • 我不知道什么时候改变一个值,(例如maxLenghtArray)另一个(tableData)有值。我没有探测代码。尝试只处理其中一个并告诉我们是否有效
  • 它只需稍作修改即可工作。谢谢你。但是,如果 maxLengthArray 包含更多元素并且我想循环 maxLengthArray,即我不想将其写为 this.maxLengthArray[0] 怎么办?每行应根据 maxLengthArray[i] 填充空行
  • 真的我会在组件 _maxLenghtArray 中创建一个数组而不是一个数组(然后称为 maxLength),只是一个数字,并且在父级中传递像
  • 如果maxLengthArray有2组行,我要遍历
猜你喜欢
  • 2019-05-02
  • 1970-01-01
  • 1970-01-01
  • 2020-10-29
  • 1970-01-01
  • 2012-07-16
  • 1970-01-01
  • 1970-01-01
  • 2020-11-21
相关资源
最近更新 更多