Primeng Editable Rows - NullInjectorError: Нет поставщика для EditableRow - PullRequest
2 голосов
/ 19 июня 2019

У меня есть рабочая таблица primeng, для которой я хотел сделать строки редактируемыми, и следовал их документации, чтобы сделать это. Но он выдает мне следующую ошибку при попытке загрузить

NullInjectorError: No provider for EditableRow

У моего определения p-таблицы есть следующее

<p-table
      [columns]="selectedColumns"
      [value]="tableData"
      [resizableColumns]="true"
      [reorderableColumns]="true"
      [paginator]="true"
      [rows]="10"
      [rowsPerPageOptions]="[5, 10, 25, 50, 100]"
      editMode="row"
>

и так как я загружаю в разных случаях динамические данные, мое определение строки (это много, но в основном просто копирование / вставка из их шаблона):

      <ng-template *ngIf="canEdit" pTemplate="body" let-rowData let-editing="editing" let-ri="rowIndex">
        <tr [pEditableRow]="rowData">
          <ng-container *ngFor="let col of selectedColumns">
            <td>
              <p-cellEditor>
                <ng-template pTemplate="input">
                  <input pInputText type="text" [(ngModel)]="rowData[col.field]" required />
                </ng-template>
                <ng-template pTemplate="output">
                  {{ rowData[col.field] }}
                </ng-template>
              </p-cellEditor>
            </td>
          </ng-container>
        </tr>
        <td style="text-align:center">
          <button
            *ngIf="!editing"
            pButton
            type="button"
            pInitEditableRow
            (click)="onRowEditInit(rowData)"
          >edit</button>
          <button
            *ngIf="editing"
            pButton
            type="button"
            pSaveEditableRow
            style="margin-right: .5em"
            (click)="onRowEditSave(rowData)"
          >save</button>
          <button
            *ngIf="editing"
            pButton
            type="button"
            pCancelEditableRow
            (click)="onRowEditCancel(rowData, ri)"
          >cancel</button>

Но ему не нравится pInitEditableRow / pSaveEditableRow / pCancelEditableRow

Так как именно на это жалуются ошибки. У меня есть таблица, импортированная в мои модули приложения, и ни в одном из примеров ничего не добавлено, поэтому я не уверен, почему он говорит, что для EditableRow нет поставщика.

1 Ответ

1 голос
/ 19 июня 2019

Я действительно тупой. Ошибка была настолько странной, что я ее переосмыслил.

Мое закрытие </tr> не в том месте. Кнопки случайно находятся за пределами ряда, поэтому, конечно, они никогда не будут работать.

Как только я обернул кнопки в тот же tr, что и остальные tds, он работал нормально.

...