使用反应式表单时将模板引用变量绑定到 ngModel

2024-06-25

我正在使用反应式表单。当输入状态无效时,我会显示错误。这是我的观点:

<div class="form-group">
    <label for="username">Username</label>
    <input name="username"
           type="text"
           class="form-control"
           id="username"
           formControlName="username"
           #username/>
    <div class="alert alert-danger"
         *ngIf="formDir.form.controls.username.touched && 
                formDir.form.controls.username.invalid">
        This field is required.
    </div>
</div>

<div class="form-group">
    <label for="password">Password</label>
    <input type="password"
           id="password"
           class="form-control"
           name="password" />
</div>

<pre>{{myForm.value | json}}</pre>
<button class="btn btn-primary" type="submit">Sign in</button>

每次我想使用 ngIf 显示验证错误时,我都必须编写这个笨拙的代码:

*ngIf="formDir.form.controls.username.touched && 
       formDir.form.controls.username.invalid">

当你有更多的对象需要验证时,它会成为更大的迫害者。

通过以下 angular.io 上的文档和这个例子 https://stackblitz.com/angular/jxkgqklvokp?file=src%2Fapp%2Freactive%2Fhero-form-reactive.component.ts我找到了一个解决方案,但我必须为我想要在视图中访问它的每个表单控件创建一个实例。

我正在寻找一种解决方案,例如我们可以在模板驱动验证中使用的解决方案,使用临时变量和 ngModel,如下所示:

<input type="text" class="form-control" name="username" #username="ngModel">
<div *ngIf="username.touched && username.invalid" class="alert alert- 
danger">Email is required</div> 

据我了解这个链接 https://github.com/angular/angular/issues/9363没有办法实现这一点,但这个链接是旧的,它可能在新版本的角度中存在解决方案。

你能帮助我吗?

thanks


使用 ngIf 表达式后跟 let 来重命名表达式的结果:

<div *ngIf="formDir.form.get('username'); let c" class="form-group">
    <label for="username-id">Username</label>
    <input
       type="text"
       class="form-control"
       id="username-id"
       [formControl]="c" />
    <div class="alert alert-danger" *ngIf="c.touched && c.invalid">
        This field is required.
    </div>
</div>

你也可以说:

<div *ngIf="formDir.form.controls.username; let c" ...>

如果您碰巧没有可用于 ngIf 的 div 或其他元素(假定其值始终为真),则可以使用 ng-container。

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

使用反应式表单时将模板引用变量绑定到 ngModel 的相关文章

随机推荐

  • 在 UI 更新或触摸事件之前动画不会开始

    我有一个奇怪的问题AlphaAnimation 它应该在以下情况下重复运行 AsyncTask调用处理程序 但是 第一次调用处理程序时Activity 除非我触摸屏幕或更新 UI 例如按手机的菜单按钮 否则动画不会启动 奇怪的是 一旦动画至
  • 更改 IIS URL 重写规则中的查询字符串值

    到目前为止我已经尝试了多种组合但没有运气 我有一个如下所示的网址 https teams company com Search pages results aspx url https teams2017 company com sites
  • Zend Framework 2 - 整数表单验证

    我有以下问题 我 根据教程 编写了一个表单验证 文本字段工作得很好 但整数字段的行为很奇怪 这是我的验证器 inputFilter gt add factory gt createInput array name gt zip requir
  • 将 IMPORTXML Xpath 查询格式化为 Google 表格的可读数据

    我正在将 XML 数据导入到具有以下结构的 google 工作表中 编辑 网址 https sonicstate com news tools revive stats client camp 3785 xml https sonicsta
  • 从Lua到C的Lua嵌套表

    我不幸未能将嵌套 Lua 表转换为 C json 对象 我正在使用 LuaTableToJson 请参阅后面的代码 其中 index 是要检索的参数索引 PopOneArg 是根据值的类型处理值的例程 当有嵌套表时 我想递归地调用 LuaT
  • Android OPEN 微调器,单击按钮即可

    我已经实现了按钮 单击并打开带有微调器的对话框 如下所述here http www dotnetexpertsforum com dialog box with spinner view in android t1485 html 然而 这
  • 如何编写一个简单的版本控制系统?

    我想做一个简单的版本控制系统 但我不知道如何构建我的数据和代码 这是一个简短的例子 用户登录 User has two options when uploading a file 提交新文件 提交文件的新版本 用户应该能够看到树 版本不同
  • woocommerce 在前端按库存和缺货对产品进行排序

    我想首先在产品类别中显示库存产品 或者如果可能的话在任何地方显示 然后我也想在 Woocommerce 中显示缺货产品 其实有很多产品没有数量但是有库存 所以需要检查库存状态 但我更喜欢先有更多的数量 在这种情况下 如何强制当前排序 非常感
  • 如何使用 jQuery 调用需要基本身份验证的 JSON Web 服务?

    我在 javascript 方面有点新手 但我正在尝试调用一个 JSON Web 服务 该服务需要使用 jQuery 或任何真正有效的东西 进行基本身份验证 我在谷歌上找不到任何真正的答案 我想做的事情可能吗 您将需要设置适当的请求标头来传
  • golang 将 big.Float 转换为 big.Int

    将big Float转换为big Int 我在下面编写代码 但它溢出了uint64 那么将big Float转换为big Int的正确方法是什么 package main import fmt import math big func Fl
  • jQuery .append() 产生乱序的 html 元素。为什么?

    我的 html 包含这个 div div 当我在 javascript 中这样做时 container append div container append p container append test content containe
  • Angular 2/4 编辑表单填充 FormArray 控件

    我正在尝试为具有嵌套属性 FormArray 的模型实现编辑表单 我在语法上遇到了问题 并且不确定我是否走在正确的轨道上 主表单的属性有效 这是我遇到问题的嵌套表单 这是我到目前为止所拥有的 这里我发起表单组 private initFor
  • 如何使用官方 MongoDB C# 驱动程序将 BsonDocument 转换为强类型对象?

    出于单元测试的目的 我想测试我的类映射 而无需在 MongoDB 数据库中读取和写入文档 为了处理特殊情况 例如循环父 子引用和只读属性 我使用了BsoncClassMap RegisterClassMap lt MyType gt 一些自
  • Google Apps 脚本 UrlFetchApp 返回未经授权的错误 401

    这是我正在使用的代码 function doc to html id var url https docs google com feeds download documents export Export id id exportForm
  • ReactJS - 排序 - TypeError: 0 是只读的

    我试图在将对象映射到reactjs之前对其进行排序 但每次这样做时 我都会不断收到 TypeError 0 is read only 我注意到加载时 props 是空的 但即使当我试图检查数组的长度并且仅在它大于 0 时应用排序 或者当数组
  • 静态解构器

    我在 Web 服务中实例化了类 该服务在静态成员中保留了一些资源 如果我不是静态地持有这些资源 我可能会通过一些 IDisposable 对象访问它们 我可以在 Dispose 上释放资源 无论保留此会话是否是一个好主意 NET 是否提供了
  • 如何显示base64编码的pdf?

    我必须在新选项卡中显示 base64 pdf 我正在使用下面的代码 var windo window open var objbuilder objbuilder windo document write objbuilder 它可以在 F
  • 具有多种布局的 RecyclerView

    我正在使用 RecyclerView 在 CardView 中显示文本 但我想在 RecyclerView 的顶部添加一个 Header TextView 如下所示 因此 我仅使用 TextView 制作了另一个布局文件 top heade
  • 将在gunicorn上运行的Flask应用程序代理到nginx中的子路径

    我有一个 Flask 应用程序在gunicorn上运行http 127 0 0 1 4000 gunicorn b 127 0 0 1 4000 webapp app 现在我想使用nginx作为反向代理和转发http myserver co
  • 使用反应式表单时将模板引用变量绑定到 ngModel

    我正在使用反应式表单 当输入状态无效时 我会显示错误 这是我的观点 div class form group div