我正在使用很多Material Design表在Angular中开发一个应用程序。
现在,在其中一些表中,数据可以被编辑,所以我有几行,其中每一行都有一系列包含一些字段的列,最后一列包含一些允许我提交数据更改的按钮或者恢复到初始状态。
功能非常好,我可以毫无问题地编辑数据和所有内容,现在我希望通过添加数据验证并使用{{1}在输入下显示提示和错误来改善用户体验}和mat-hint
问题是我无法禁用"提交"按钮,以防其中一行的某个字段无效。
在应用程序的其他部分,没有表格,我所做的是:
mat-error
但现在我有
<form #form="ngForm">
<mat-form-field>
<input name="data" #inputData="ngModel" [(ngModel)]="model" />
<mat-error *ngIf="inputData.errors">
some error
</mat-error>
</mat-form-field>
<button [disabled]="form.invalid" type="submit">Submit</button>
</form>
我怎样才能达到同样的效果?我知道简单地使用<mat-table>
<ng-container cdkColumnDef="id">
<mat-header-cell *cdkHeaderCellDef> Id </mat-header-cell>
<mat-cell *cdkCellDef="let row"> {{row.id}} </mat-cell>
</ng-container>
<ng-container cdkColumnDef="input">
<mat-header-cell *cdkHeaderCellDef> Input </mat-header-cell>
<mat-cell *cdkCellDef="let row">
<input [(ngModel)]="row.data" name="data" #inputData="ngModel"/>
</mat-cell>
</ng-container>
<ng-container cdkColumnDef="actions">
<mat-header-cell *cdkHeaderCellDef>Actions</mat-header-cell>
<mat-cell *cdkCellDef="let row;">
<button (click)="submitData(row)">
Submit
</button>
</mat-cell>
</ng-container>
<mat-header-row *cdkHeaderRowDef="['id', 'input', 'actions']"></mat-header-row>
<mat-row *cdkRowDef="let row; columns: ['id', 'input', 'actions'];"></mat-row>
</mat-table>
并不起作用,因为它是模板变量,行,标题和单元格定义都在不同的模板中。我真的想避免在行中添加内容,因为那是我的模型变量,我想把事情分开。
我可以显示错误,我想要实现的主要功能是禁用提交按钮,以防某些字段在如上所示的表格中无效。