【问题标题】:How to put validation in mat-select如何在 mat-select 中进行验证
【发布时间】:2019-05-19 23:05:45
【问题描述】:

我有多个带有 mat-select 的行。我希望能够以这样一种方式进行验证,即我应该能够每个选择至少 1 个值。如果我不从 mat- 中选择每种类型的 1 个值选择然后我应该无法继续下一步。

<ng-container matColumnDef="type">Type
            <mat-header-cell *matHeaderCellDef mat-sort-header>Type</mat-header-cell>
            <mat-cell *matCellDef="let element">
              <mat-select placeholder="Select Type" [(ngModel)]="type.text" (selectionChange)="changed($event)">
                <mat-option *ngFor="let type of typeColumn  let i = index" [value]="{type: type.text, index: i}" [disabled]="!type.allowed && type.allowed != undefined">
                  {{ type.text }} 
                </mat-option>
              </mat-select>
            </mat-cell>
          </ng-container>

此 html 代码允许我显示 mat-select 并显示下拉值列表。

  typeColumn = [
{text:'None'},
{text:'Time',allowed: true},
{text:'Segment'},
{text:'Key',allowed: true},
{text:'Input'},
{text:'Quantile' } ];

这是我得到的下拉选项列表。

在继续下一步之前,我需要验证用户应至少选择每个 Time、Key、Segment、Input 和 Key 的一个值。

【问题讨论】:

    标签: angular typescript validation angular-material


    【解决方案1】:

    由于您没有发布完整的代码,因此有点难以提供帮助,例如堆叠闪电战。尤其是看起来您正在使用 mat-table 并且可能希望将更改持久保存到数据源。

    我在here 上进行了一次快速堆栈闪电战,它只显示了 6 个mat-select 元素,并检查selectionChange() 是否选择了所有标记有required 属性的类型。这反映在变量isValid 中,基于此您可以让用户前进或不前进。

    这应该让您大致了解如何进行验证。要获得更准确的答案,您需要发布更多代码和数据,最好是一个有效的堆栈闪电战。

    【讨论】:

    • 我无法添加 stackblitz,因为 mat-table 数据是从 API 填充的。您发布的 stackblitz 是正确的,但我希望应该有一个下一个按钮的功能,在单击下一个按钮之前,我应该在下拉列表中选择至少一个时间、键、段。如果不选择,我将无法继续进行
    • 您可以随时在您的堆栈闪电战中模拟数据/提供静态数据。如果您的意思是启用/禁用按钮,那么here 是更新的堆栈闪电战。
    • 这就是我要找的。谢谢你。我已对您的答案投了赞成票,并将其选为接受的答案。
    猜你喜欢
    • 2018-11-28
    • 2018-09-07
    • 1970-01-01
    • 2019-12-28
    • 2018-05-11
    • 2014-05-20
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多