Встроенное редактирование в таблице данных Angular Material

Рассмотрим пример ниже. Можно ли сделать таблицу данных углового материала с функцией встроенного редактирования? Или сделать ячейки под определенными столбцами доступными для редактирования при загрузке (см. изображение ниже, где поля столбца электронной почты доступны для редактирования). Если да, не могли бы вы поделиться примером кода?

Таблица данных Angular Material с динамическими строками

введите описание изображения здесь


person Sundar    schedule 12.04.2018    source источник


Ответы (7)


Ну, это не чистое встроенное редактирование, но - я ищу то же самое - это достаточно близко для моих целей:

https://stackblitz.com/edit/inline-edit-mat-table?file=app%2Fapp.component.html

[Идея состоит в том, чтобы при нажатии на ячейку отображалось небольшое всплывающее окно]

Моей альтернативной идеей было бы (хотя и с большей работой) заменить все ячейки поля ввода и привязать их к правильному значению, которое для пользователя имело бы точный желаемый вариант использования.

person Hobbamok    schedule 10.04.2019

На самом деле это открытая проблема в Angular Material: Таблица: добавление встроенного редактирования для входных данных. К сожалению, в настоящее время это не реализовано, но вы можете найти некоторые идеи для решения в комментариях к этой проблеме.

Раздел «Редактирование встроенного текста» в разделе Таблицы данных > Поведение в материале. Руководство по дизайну показывает, как это должно выглядеть.

person Cito    schedule 19.12.2018
comment
любое решение для этого? - person Flash; 20.03.2019

похоже, подходит: редактируемые столбцы, нумерация страниц, всплывающее подтверждение и поиск в таблице редактируемые:

как компонент: https://www.npmjs.com/package/angular-inline-editable-table

как источник: https://github.com/RatneshChauhan/springboot-angular-crud

редактируемая таблица

person Alisson Gomes    schedule 25.03.2020

В последних версиях Angular Material 11 | 10

Вы можете вызвать метод .renderRows() после обновления данных строки

addRowData(row_obj){
   var d = new Date();
   this.dataSource.push({
     id:d.getTime(),
     name:row_obj.name
   });
   this.table.renderRows();
 }

 deleteRowData(row_obj){
    this.dataSource = this.dataSource.filter((value,key)=>{
      return value.id != row_obj.id;
    });
 }

Учебное пособие по исходному коду ссылка

введите здесь описание изображения

person Code Spy    schedule 01.04.2021

Можно использовать [(ngModel)] для редактирования полей.

Вот фрагмент кода:

<mat-table #table [dataSource]="dataSource">

    <!-- Name Column -->
    <ng-container matColumnDef="name">
        <mat-header-cell *matHeaderCellDef> Name </mat-header-cell>
        <mat-cell *matCellDef="let element">
            <mat-form-field floatLabel="never">
                <input matInput placeholder="Name" 
                   [value]="element.name" [(ngModel)]="element.name">
            </mat-form-field>
        </mat-cell>
    </ng-container>

Вот пример этого в https://stackblitz.com/edit/angular-mat-table-inline-editing?file=app%2Ftable-editing-example.html Автору спасибо, я просто добавляю это для полноты

person Deian    schedule 05.05.2021
comment
Хотя эта ссылка может ответить на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если связанная страница изменится. – Из обзора - person Nick; 05.05.2021
comment
@Ник Хорошо. Вы можете удалить отрицание сейчас :) - person Deian; 05.05.2021

Я создал встроенное редактирование в таблице данных Angular Material с фильтром и нумерацией страниц.

Следующую функциональность я добавил в мат-таблицу с примером FormArray:

  1. Фильтр
  2. Перейти на определенную страницу.
  3. встроенное редактирование в таблице данных материала.
  4. Добавьте новую строку.
  5. Отредактируйте существующую строку.
  6. Удалить строку.

Вот пример для этого Mat-table-inline-editing-project-Link

person neilnikkunilesh    schedule 26.05.2021

person    schedule
comment
Пожалуйста, отредактируйте свой ответ, чтобы объяснить, что вы здесь делаете, и почему этот подход может быть предпочтительнее, чем предыдущие пять ответов. Полагается ли это на новый синтаксис, который предпочтительнее исходных, старых ответов? Устраняет ли это ограничения в этих ответах? Это поможет будущим читателям лучше понять, почему они должны рассмотреть это предложение. - person Jeremy Caney; 06.05.2021