angular - 将 Angular 中的 * ngIf 属性组合成一个 Input
问题描述
我在 Angular 11 和 Angular 材料中有一个项目,我试图将*ngIf
属性与 readOnly 属性结合起来,以避免放置两个输入。
这是我的component.html
:
<ng-container matColumnDef="name">
<mat-header-cell *matHeaderCellDef>Name</mat-header-cell>
<mat-cell *matCellDef="let clients; let i = index">
<mat-form-field *ngIf="editIndex!=i" floatLabel="never" [appearance]="'none'">
<input matInput placeholder="{{clients.name}}" [(ngModel)]="clients.name" [readonly]="true">
</mat-form-field>
<mat-form-field *ngIf="editIndex==i" floatLabel="never" [appearance]="'legacy'">
<input matInput placeholder="{{clients.name}}" [(ngModel)]="clients.name">
</mat-form-field>
</mat-cell>
</ng-container>
现在我有两个mat-form-field
,每个都有一个输入,一个[readonly]="true"
取决于*ngIf = "editIndex! = I"
属性。我怎样才能将两者结合起来,只将一个 mat-form-field 与一个 Input 结合起来?
这是我想尝试的,但我不知道该怎么做或是否可以做到:
<ng-container matColumnDef="name">
<mat-header-cell *matHeaderCellDef>Name</mat-header-cell>
<mat-cell *matCellDef="let clients; let i = index">
<mat-form-field floatLabel="never" [appearance]="'none'">
<input matInput placeholder="{{clients.name}}" [(ngModel)]="clients.name" *ngIf="editIndex!=i; [readonly]="true"">
</mat-form-field>
</mat-cell>
</ng-container>
解决方案
您可以设置条件readonly
,appearance
也可以。
<mat-form-field floatLabel="never" [appearance]="editIndex != i ? 'none' : 'legacy'">
<input matInput placeholder="{{clients.name}}"
[(ngModel)]="clients.name" [readonly]="editIndex!=i"">
</mat-form-field>
推荐阅读
- python - PANDAS - 根据该列中单元格的值删除列
- php - 如何在本地主机上使用 htaccess 制作 seo url?
- c++ - 将此类分离为头文件和 cpp 文件
- r - 如何生成具有可能出现在多个列中的分组值的汇总表?
- java - 具体编译规则 Maven
- python - 正确使用 Try
- java - 从 PowerShell 发出 POST 请求,来自 Powershell 但不是 Postman 的 JSON 解析错误
- r - 美国人口普查部门在 ggplot2 中的映射
- macos - 尝试使用终端合并多个 .csv 文件,找不到命令:复制。Homebrew Mac Catalina 10.15 的错误路径
- python - 在 tkinter 中设置一个按钮,该按钮具有与其相关的多个命令