Вы можете решить эту проблему, используя ViewChildren
, чтобы получить доступ ко всем элементам ввода в вашей таблице и идентифицировать их, например, с помощью атрибута id
.
Извлечь это stackblitz, где я собрал быстрое решение.
По сути, все, что я делал в шаблоне, это добавлял директиву matInput
к вашим input
элементам и однозначно определял каждый из них через *Атрибут 1013 * (просто присвоение переменной inputColumn
текущей строки element
):
<mat-form-field>
<input matInput id="{{element.inputColumn}}" placeholder="{{element.inputColumn}}">
</mat-form-field>
Добавлен вызов функции для вашей кнопки, где мы пропускаем текущие строки element
:
<button mat-raised-button (click)="changeValue(element)">{{element.buttonColumn}}</button>
В компоненте мы извлекаем все элементы input
с директивой matInput
:
@ViewChildren(MatInput) matInputs: QueryList<MatInput>;
И затем в функции, которая вызывается кнопками, мы ищем правильный matInput
через id
, что соответствует element
'inputColumn
значению:
changeValue(element: TableData) {
const input = this.matInputs.find(matInput => matInput.id === element.inputColumn);
input.value = 'Changed!';
}
Я уверен, что есть другие способы решить эту проблему, не уверен, как это ведет себя, если у вас многокнопок / рядов.