【问题标题】:Check for invalid inputs on ngIF Angular 11检查 ngIF Angular 11 上的无效输入
【发布时间】:2021-06-30 03:32:32
【问题描述】:

代码

.ts

buildForm() {
    this.commentForm = this.fb.group({
      name: [
        '',
        [
          Validators.required,
          Validators.minLength(2),
          Validators.maxLength(25),
        ],
      ],
      comment: ['', [Validators.required]],
    });

.html

<div fxFlex *ngIf="commentForm.value.name && commentForm.value.comment">
      <mat-list fxFlex>
        <div matLine><span>{{ commentForm.value.comment }}</span></div>
        <div matLine><span><b>{{ commentForm.value.name }}</b></span></div>
      </mat-list>

上下文:我在 .ts 文件中为“名称”和“注释”编写了一个必需的验证器,但是该名称附加了另一个验证器,用于检查该名称是否有 3 个或更多字符

问题:我得到的代码(上面)主要是在名称和注释为空时隐藏 div 但是一旦用户键入 2 个字符或更少字符的名称,div出现了——我知道我在这里遗漏了一个条件,但 Angular 对我来说是相当新的,所以我不知道如何检查 ngIf 语句中的无效输入,或者是否需要为它做其他事情(然后编写一个函数附在模板上)?

我尝试过的:我尝试过将“commentForm.value.invalid”、“commentForm.value.name.invalid”和“commentForm.invalid”作为条件句的一部分,但效果不佳.

请帮忙

【问题讨论】:

  • 类似:commentForm.get('name').touched &amp;&amp; commentForm.get('name').errors?.required

标签: angular typescript


【解决方案1】:

您可以显示如下相关的错误消息。

<div fxFlex *ngIf="commentForm.controls['name'].invalid && (commentForm.controls['name'].dirty || commentForm.controls['name'].touched)">
  <mat-list fxFlex>
    <div matLine *ngIf="commentForm.controls['name'].errors.required">
        Required error message here
    </div>
    <div matLine *ngIf="commentForm.controls['name'].errors.minLength">
        Min length error message here
    </div>
    <div matLine *ngIf="commentForm.controls['name'].errors.maxLength">
        Max length error message here
    </div>
  </mat-list>
</div>

【讨论】:

  • 谢谢,最初它没有用,但我玩了一下它并调整了一些值(即使“commentForm......无效到有效”)并且成功了跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多