Angular 以编程方式将p-表格单元格切换到Priming中的编辑模式

Angular 以编程方式将p-表格单元格切换到Priming中的编辑模式,angular,primeng,Angular,Primeng,我有一个素数表(新模块),其中有可编辑的单元格,显示简单的数据。在表之外,我有一个按钮可以向表中添加新的空对象/行,我希望在单击按钮时以编程方式跳转到新单元格中的编辑模式 我可以将空行添加到表中,但我不知道如何将新行单元格元素切换到编辑模式 我得到的EditableColumn如下:@ViewChild(EditableColumn)EditableColumn:EditableColumn ... <td *ngFor="let col of columns" style="width:

我有一个素数表(新模块),其中有可编辑的单元格,显示简单的数据。在表之外,我有一个按钮可以向表中添加新的空对象/行,我希望在单击按钮时以编程方式跳转到新单元格中的编辑模式

我可以将空行添加到表中,但我不知道如何将新行单元格元素切换到编辑模式

我得到的EditableColumn如下:
@ViewChild(EditableColumn)EditableColumn:EditableColumn

...
<td *ngFor="let col of columns" style="width:150px;height: 27px" #td pEditableColumn>
...
。。。
...
editableColumn
上,我可以调用openCell()方法,但它总是跳转到第一个生成的单元格,而不是新生成的行单元格

有人能帮忙吗?
有没有更好的方法来实现我的目标?

这可以通过以下方法轻松实现:

打底表:

<p-table #dt [columns]="header" [value]="data">

这种方法的诀窍是对要打开的可编辑列调用onClick(事件)

editableColumn.onClick(e);
可以通过多种方式获取对列的引用,其中一种是使用ViewChildren

@ViewChildren(EditableColumn) private editableColumns: QueryList<EditableColumn>;
@ViewChildren(EditableColumn)私有editableColumns:QueryList;

有相同的问题。我已经为动态生成列的情况找到了一个解决方案。如果单击同级表字段单元格,我必须打开每行的一个特定单元格。点击城市字段,我就会打开地址单元格

我知道这个解决方案看起来很难看,但这是我能找到的唯一可能的解决方案

TS:

@ViewChild(EditableColumn)EditableColumn:EditableColumn
@ViewChildren(EditableColumn)私有editableColumns:QueryList
openGoogleAddress(事件):无效{
if(事件?.path){
const currentRowAddressCell=this.editableColumns.filter(
item=>item?.el?.nativeElement==event?.path[3]?.children[1]
)
this.editableColumn=currentRowAddressCell[0]
设置超时(()=>{
this.editableColumn.openCell()
}, 0)
}
}
HTML:


{{
(rowData[col.value][col.sublabel]| titlecase)| |清空
}}

您能创建一个Plunker或至少共享更多代码吗?我知道这很旧,但您有没有想过如何处理这个问题?这里的问题相同:显然这并不容易。尤其是由于可编辑的HTML标记不存在,而是动态添加的。请看,您没有显示cellId附加到的id,因此这没有什么帮助。但是如何在将表格加载到Angular后将表格中的所有单元格设置为可编辑?
@ViewChildren(EditableColumn) private editableColumns: QueryList<EditableColumn>;
@ViewChild(EditableColumn) editableColumn: EditableColumn
@ViewChildren(EditableColumn) private editableColumns: QueryList<EditableColumn>

openGoogleAddress(event): void {
  if (event?.path) {
    const currentRowAddressCell = this.editableColumns.filter(
      item => item?.el?.nativeElement === event?.path[3]?.children[1]
    )
    this.editableColumn = currentRowAddressCell[0]

    setTimeout(() => {
      this.editableColumn.openCell()
    }, 0)
  }
}
<div *ngSwitchCase="'city'">
  <span class="p-flex" (click)="openGoogleAddress($event)">{{
    (rowData[col.value][col.sublabel] | titlecase) || emptyDash
  }}</span>
</div>