检查后表情发生了变化。以前的值:'ng-valid:true'。当前值:'ng-valid: false'

2023-12-25

我在父组件中有角反应形式,在子组件中有部分。

在子组件内部,我有一个复选框 - 当选中时 - 将打开更多字段,我希望它们全部都是必需的。

我正在使用 setValidators 但出现错误

ParentFormComponent.html:3 错误 错误: ExpressionChangedAfterItHasBeenCheckedError:表达式已更改 检查完后。以前的值:'ng-valid:true'。当前值: 'ng-valid:假'。 在 viewDebugError (core.js:7601) 在表达式ChangedAfterItHasBeenCheckedError(core.js:7589) 在 checkBindingNoChanges (core.js:7691) 在 checkNoChangesNodeInline (core.js:10560) 在 checkNoChangesNode (core.js:10541) 在 debugCheckNoChangesNode (core.js:11144) 在 debugCheckRenderNodeFn (core.js:11098) 在 Object.eval [作为 updateRenderer] (ParentFormComponent.html:3) 在 Object.debugUpdateRenderer [作为 updateRenderer] (core.js:11087) 在 checkNoChangesView (core.js:10442)

ParentFormComponent.html:3 错误上下文 DebugContext_ {视图:对象, nodeIndex:2,nodeDef:对象,elDef:对象,elView:对象}

这是 ParentFormComponent.html:3 行

 <form [formGroup]="parentForm" (ngSubmit)="submitForm()">

这是我的代码:

<label class="container">DB
    <input #db type="checkbox" name="db" (change)="checkValue(db.name, db.checked)"> 
    <span class="checkmark"></span>
</label>

<div *ngIf="db.checked" formGroupName="_monitorDB">
    <mat-form-field>
        <input matInput placeholder="Server name" formControlName="ServerName">
    </mat-form-field>

    <mat-form-field>
        <input matInput placeholder="DataBase name" formControlName="DbName">
    </mat-form-field>

    <mat-form-field>
        <input matInput placeholder="table name" formControlName="DB_tableName">
    </mat-form-field>

    <mat-form-field>
        <input matInput placeholder="port" formControlName="DbPort">
    </mat-form-field>

    <mat-form-field>
        <input matInput placeholder="Query" formControlName="Query">
    </mat-form-field>

    <mat-form-field>
        <input matInput placeholder="Permissions" formControlName="Premissions">
    </mat-form-field>

</div>

并在 ts 文件中:

checkValue(name:string, event: any){
    if (event == true){
      this.test.push(name);
      if (name =="db"){
         this.childForm.get('_monitorDB').get('ServerName').setValidators([Validators.required]);
         this.childForm.get('_monitorDB').get('DbName').setValidators([Validators.required]);
         this.childForm.get('_monitorDB').get('DB_tableName').setValidators([Validators.required]);
         this.childForm.get('_monitorDB').get('DbPort').setValidators([Validators.required]);
         this.childForm.get('_monitorDB').get('Query').setValidators([Validators.required]);
         this.childForm.get('_monitorDB').get('Premissions').setValidators([Validators.required]);

      }

    }

    else{
      const index: number = this.test.indexOf(name);
      if (index !== -1) {
          this.test.splice(index, 1);
          if (name =="db"){
            this.childForm.get('_monitorDB').get('ServerName').clearValidators();
            this.childForm.get('_monitorDB').get('ServerName').updateValueAndValidity();
            this.childForm.get('_monitorDB').get('DbName').clearValidators();
            this.childForm.get('_monitorDB').get('DbName').updateValueAndValidity();
            this.childForm.get('_monitorDB').get('DB_tableName').clearValidators();
            this.childForm.get('_monitorDB').get('DB_tableName').updateValueAndValidity();
            this.childForm.get('_monitorDB').get('DbPort').clearValidators();
            this.childForm.get('_monitorDB').get('DbPort').updateValueAndValidity();
            this.childForm.get('_monitorDB').get('Query').clearValidators();
            this.childForm.get('_monitorDB').get('Query').updateValueAndValidity();
            this.childForm.get('_monitorDB').get('Premissions').clearValidators();
            this.childForm.get('_monitorDB').get('Premissions').updateValueAndValidity();
          }
      }      
    }

     this.checkboxArr.emit(this.test);
 }

我遇到了同样的问题,我通过使用修复了它AfterViewChecked and ChangeDetectorRef:

import { AfterViewChecked, ChangeDetectorRef } from '@angular/core'

export class ClassName implements AfterViewChecked {
  constructor(private readonly changeDetectorRef: ChangeDetectorRef) {}

  ngAfterViewChecked(): void {
    this.changeDetectorRef.detectChanges();
  }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查后表情发生了变化。以前的值:'ng-valid:true'。当前值:'ng-valid: false' 的相关文章

随机推荐

  • fieldset 必须是表单吗?

    我对DTD一无所知 http www bls gov oco ocos292 htm http www bls gov oco ocos292 htm 在此页面上查看如何在表单之外使用 fieldset 这很酷 我喜欢这种风格 我认为这个问
  • 在 React 中将数据从子级传递给父级

    我在 React 中有 3 个组件 其中一个充当容器 将我的子组件传递到表单中进行渲染 提交表单时 我想获取父组件中的每个子组件 循环遍历每个子组件 创建服务器期望的对象 然后将对象列表发送回服务器 我正在努力访问父组件中 onSubmit
  • JAXB 解组返回 Null

    我正在制作这个示例 GUI 它只是将计算机部件从一侧移动到另一侧 并且能够将列表 以 xml 格式 加载和保存到桌面 除了重新加载已保存的 xml 文件之外 一切正常 我认为这与Save java中的注释有关 话虽如此 我不确定需要什么或者
  • pywinauto:访问 chrome gui

    我正在尝试使用 pywinauto 选择打印机并在 chrome 浏览器上进行打印 但我无法访问 gui 组件 我可以在 UIAutomation 模式下看到 Microsoft Inspect exe 中的组件 参见屏幕截图 我已经开始使
  • 将 Curl 命令转换为在 Zapier Webhook 中运行

    我正在尝试找到一种方法来运行它curlZapier 上的 Webhook Zap 中的命令 但我似乎无法弄清楚 我如何将其输入到 Webhook 中 将其作为一个运行会更好吗 Code Zap curl X POST https api z
  • 如何在 RealityKit 中显示图库中的图像?

    我想显示图库中的图像 我正在使用 imagePicker 加载图像 func imagePickerController picker UIImagePickerController didFinishPickingMediaWithInf
  • io.open 与 python 中 open 的区别

    过去 有codecs被替换为io 虽然看起来更建议使用io open 大多数Python入门课程仍然在教授open 有一个问题是Python 中 open 和 codecs open 的区别 https stackoverflow com
  • Spring Boot 中的 @InitBinder 无法与 @RequestBody 一起使用

    如果我使用 InitBinder而不限制它 它可以与 RequestBody一起正常工作来验证我的对象 InitBinder private void initBinder WebDataBinder binder binder setVa
  • YouTube 自动播放无法正常工作

    我正在使用 youtube embed 来显示视频 我需要在网站打开时自动播放 我在这段代码工作正常之前就使用了它 但在过去的几天里 自
  • 如何使用 iText7 和 C# 将文本添加到现有 pdf 而不覆盖内容?

    我有这段代码 应该在 pdf 中的图像后面插入文本 Read the data from input file string reader C InesProjetos PrintTextWithImage PrintTextWithIma
  • 如何获取另一个字符串中字符串的所有 IndexOf 实例 C# [重复]

    这个问题在这里已经有答案了 我有一个巨大的字符串 内容页 我想获取子字符串实例的所有索引 示例 怎么样you以及在哪里you 我如何获得所有的索引you在上面的句子中 请帮忙 您可以使用以下扩展名 它用IndexOf http msdn m
  • ExecJS 咖啡脚本不显示编译错误的行号(Rails 资产管道)

    在我的 Rails 应用程序之一中 ExecJS 没有显示咖啡脚本编译错误的行号 我的编译错误消息将如下所示 ExecJS RuntimeError in Referrals new Showing MyApp app views layo
  • App Engine - 难以访问 Twitter 数据 - Flask

    我在使用 Google App Engine 从 Twitter 搜索 API 获取数据时遇到问题 在个人开发环境中工作我没有任何问题 我能够得到我想要的 JSON 但是 一旦代码部署到 App Engine 我就会遇到 HTTP 500
  • TypeError:创建对象时 object() 不带任何参数 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 首先 我知道这里已经有很多与这个问题相关的答案 但我找不到适合我的问题的答案 当尝试创建一个对象时 我基本上只是收到此错误 如果有答案 谢谢
  • CoreData、NSManagedObject 获取或创建(如果不存在)

    我正在尝试解析大量文本文件并将其内容组织为托管对象 文本文件中有很多重复项 因此 附带 任务之一就是删除它们 在这方面我想做的是检查具有给定内容的实体是否存在 如果不存在 我将创建一个 但是 我有不同的实体 具有不同的属性和关系 我想要的是
  • 如何禁用 jQuery.jplayer 自动播放?

    当我像这样初始化播放器时 jquery jplayer jPlayer ready function this element jPlayer setFile previews cancion mp3 previews horse ogg
  • ASP.NET MVC 定位从 cshtml 生成的 cs 文件?

    所以我最近开始使用 ASP NET MVC 4 我使用的是 razor 引擎 我的问题是关于视图文件 后缀为 cshtml 在我看来 这些都是由 razor 预编译成 cs 文件 然后再编译成 MSIL 这是我作为 JSP 开发人员时所熟悉
  • 另一个 IE“预期对象”错误,没有任何信息

    嘿 我一直因为这个错误而烦恼不已这个网站 http flowdev co uk 我遇到了可怕的事情Object expected仅在 IE6 和 IE7 中第 1 行第 21 字符出现错误 我只是想知道是否有人知道这可能与什么有关 我知道整
  • 如何在闪亮的应用程序中嵌入 Twitter 时间线?

    难以将 Twitter 时间线嵌入到闪亮的应用程序中 尝试遵循此代码 library shiny runApp list ui fluidPage tags head tags script function d s id var js f
  • 检查后表情发生了变化。以前的值:'ng-valid:true'。当前值:'ng-valid: false'

    我在父组件中有角反应形式 在子组件中有部分 在子组件内部 我有一个复选框 当选中时 将打开更多字段 我希望它们全部都是必需的 我正在使用 setValidators 但出现错误 ParentFormComponent html 3 错误 错