首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

angular reactive form -更改无效后禁用控制

Angular Reactive Form是Angular框架中的一种表单处理方式。它基于响应式编程的思想,通过使用Observables来管理表单数据的变化和验证。

在Angular Reactive Form中,可以通过创建FormGroup对象来表示整个表单,FormGroup对象可以包含一个或多个FormControl对象,每个FormControl对象代表表单中的一个控件,比如输入框、复选框等。通过FormGroup对象,可以方便地对整个表单进行数据绑定、验证和提交。

对于"更改无效后禁用控制"的需求,可以通过Angular Reactive Form提供的一些特性来实现。首先,可以通过设置FormControl对象的disabled属性来禁用控件。当控件的值发生变化时,可以通过监听FormControl对象的valueChanges事件来检测值的变化,并根据需要来禁用控件。

以下是一个示例代码,演示了如何使用Angular Reactive Form来实现"更改无效后禁用控制"的功能:

代码语言:txt
复制
import { Component } from '@angular/core';
import { FormGroup, FormControl } from '@angular/forms';

@Component({
  selector: 'app-form',
  template: `
    <form [formGroup]="myForm">
      <input type="text" formControlName="myControl">
    </form>
  `,
})
export class MyFormComponent {
  myForm: FormGroup;

  constructor() {
    this.myForm = new FormGroup({
      myControl: new FormControl()
    });

    // 监听值的变化
    this.myForm.get('myControl').valueChanges.subscribe(value => {
      // 判断值是否有效
      if (value === '') {
        // 无效时禁用控件
        this.myForm.get('myControl').disable();
      } else {
        // 有效时启用控件
        this.myForm.get('myControl').enable();
      }
    });
  }
}

在上述代码中,通过创建FormGroup对象和FormControl对象来表示表单和控件。在构造函数中,通过订阅FormControl对象的valueChanges事件来监听值的变化,并根据值的有效性来禁用或启用控件。

这样,当输入框中的值为空时,输入框将被禁用,否则将启用。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云云数据库MySQL。

  • 腾讯云云服务器(CVM):提供弹性、可靠、安全的云服务器,可满足各种规模和业务需求。详情请参考腾讯云云服务器
  • 腾讯云云数据库MySQL:提供高性能、可扩展的云数据库服务,支持自动备份、容灾等功能。详情请参考腾讯云云数据库MySQL
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Angular 从入坑到挖坑 - 表单控件概览

在使用 ngModel 进行模板绑定时,angularform 标签上自动附加了一个 NgForm 指令,因为 NgForm 指令会控制表单中带有 ngModel 指令和 name 属性的元素,而...在数据验证失败的情况下,对于系统来说,表单是不允许提交的,因此可以将提交事件绑定到表单的 ngSubmit 事件属性上,通过模板引用变量的形式,在提交按钮处进行数据有效性判断,当无效时,禁用表单的提交按钮...public name = new FormControl(''); constructor() { } ngOnInit(): void { } } 当在组件中创建好控件实例,...引入 Validators 验证器 import { Validators } from '@angular/forms'; @Component({ selector: 'app-reactive-forms...{ 'nameInvalid': true } : null; } } 当实现了继承的 validate 方法,就可以在模板的控件上添加该指令

18.9K20

AngularDart4.0 指南- 表单 顶

请注意提交按钮被禁用,并且输入控件从绿色变为红色。 您将以小步骤构建此表单: 创建英雄模型类。 创建控制表单的组件。 用初始表单布局创建一个模板。...valid反映了控制值的有效性。 样式控件 有效的控制属性是最有趣的,因为当一个控制无效时,你想发送一个强烈的视觉信号。...如果您使用新(空白)英雄或无效英雄到达此组件,则在您执行任何操作之前,您将立即看到错误消息。 有些开发人员希望仅在用户进行无效更改时显示消息。 当控件是“原始的”时隐藏消息实现了这个目标。...文本字段变为空白,如果您更改了power,它将恢复为默认值。 用ngSubmit提交表单 用户应该能够在填写表单提交这个表单。...提交按钮也被禁用。 没有留下深刻印象? 想一想。 如果没有Angular的帮助,你需要做什么才能将按钮的启用/禁用状态连接到表单的有效性?

17.4K30

Angular 6.x 表单快速入门

Angular 中有两种表单: Template Driven Forms - 模板驱动式表单 (类似于 AngularJS 1.x 中的表单 ) Reactive Forms - 响应式表单 Template...Driven 表单的特点 使用方便 适用于简单的场景 通过 [(ngModel)] 实现数据双向绑定 自动生成 Form Model (异步) 最小化组件类的代码 不易于单元测试 Reactive 表单的特点...在 Angular 中,我们可以使用熟悉的 标签来创建表单。...AppComponent { username = 'semlinker'; } 需要注意的是,在使用 标签,我们的 username 输入框,必须添加 name 属性。...表单控制的状态: valid - 表单控件有效 invalid - 表单控件无效 pristine - 表单控件值未改变 dirty - 表单控件值已改变 touched - 表单控件已被访问过 untouched

4.6K20

Angular6自定义表单控件方式集成Editormd

通知 form directives 或 form controls 该接口具体如下,已去掉其中的英文注释: export interface ControlValueAccessor { writeValue...表单控件更新的函数(即,设置当控件接收到 change 事件,调用的函数) registerOnTouched:用来获取通知用户正在交互的函数(即,设置当控件接收到 touched 事件,调用的函数...该函数会根据参数值,启用或禁用指定的 DOM 元素。 ?...src/directives/reactive_directives/form_control_directive.ts export class FormControlDirective extends...registerOnTouched(fn: any): void { this.onTouched = fn; } setDisabledState 这个也未使用,即便设置也会报mdeditor未知的错误,禁用功能需要使用其他方式解决

5.2K20

React 结合 Rxjs 使用,管理数据

比如我们之前讲解的 了解 Angular 开发的内容 - 服务 Service 和 Rxjs 中怎么处理和抓取错误。当然,Rxjs 还可以用来管理数据,在组件中传递数据~这是我们本文需要了解的内容。...项目中已经默认集成了 TypeScript 形式的 Rxjs,请参考 了解 Angular 开发的内容 - 服务 Service 写法使用 我们新建一个数据管理的 javascript 文件: /...then((response) => { // console.log(response, 'response') }) setCaptchaHint(`${seconds} 秒尝试...> ); } 然后,我们设置消费者,当 userInfoSubject$ 发生更改,进行消费~ // arc/components/Header...next: (data) => { if(data.usename) { // 有值才设置 setUserInfo,防止在 useEffect 中设置 setUserInfo 无效

1.6K30

AngularDart4.0 指南- 模板语法二 顶

元素另一方面为元素更改事件组合设置特定元素属性和监听。 Angular为此提供了一个特殊的双向数据绑定语法, [(x)]. ...这些元素的所有组件都保留在内存中,Angular可能会继续检查更改。 您的应用可能会占用相当可观的计算资源,会降低用户不可见的性能。...heroForm是一个Angular NgForm指令的引用,可以跟踪表单中每个控件的值和有效性。 原生元素没有form属性。...但是NgForm指令有,它解释了如果heroForm.form.valid无效并且将整个表单控件树传递给父组件的onSubmit方法,您可以禁用提交按钮。...对于这些小型转换来说,Angular 管道是一个很好的选择。 管道是简单的函数,它接受一个输入值并返回一个转换的值。

29.9K20

AngularDart4.0 指南- 模板语法一 顶

您可以熟悉模型 - 视图 - 控制器(MVC)或模型 - 视图 - 视图模型(MVVM)的组件/模板。 在Angular中,组件扮演控制器/视图模型的一部分,模板表示视图。...快速执行 Angular在每个更改检测周期执行模板表达式。 更改检测周期由许多异步活动触发,如承诺的分辨率,http结果,计时器事件,按键和鼠标移动。...响应事件是Angular的“单向数据流”的另一面。在事件循环的这个周期中,您可以自由地在任何地方进行所有更改。 像模板表达式一样,模板语句使用了一种看起来像Dart的语言。...设置按钮的disabled属性(Properties)(例如,使用Angular绑定)禁用或启用按钮。属性(Properties)的值很重要。...Angular可能会或可能不会显示更改的值。Angular可能会检测到更改并发出警告错误。通常来说,保留数据属性和方法返回值就够了。

5.1K10

angularjs输入验证

通常需要在 form 标签中加上 novalidate 属性, 这将禁用浏览器自带的验证功能,从而使用AngularJS提供的验证。...并且最大长度限制为20个字符(21或更多的个字符将是无效的)。最后,我们设置名称应该是必填的。 当如果表单无效时,让我们用属性来控制显示还是隐藏错误列表。...最后,我们加上提交按钮,我们可以使用ng-disabled指令来根据验证是否有效控制按钮的禁用和启用: <button type="submit" ng-disabled="signup_<em>form</em>....点击提交<em>后</em>显示验证信息 要在用户试图提交表单时显示的验证,你可以通过在scope中设置一个’submitted’值,并检查该值来<em>控制</em>显示错误。...使用 ng-show 指令来<em>控制</em>显示,我们可以添加一个检查,看是否已点击提交按钮: <<em>form</em> name="signup_form" novalidate ng-submit="signupForm()

1.2K30

TDesign 更新周报(2022年7月第1周)

closeOnEscKeydown 默认值导致的无法设置的问题Drawer: 修复 closeOnOverlayClick closeOnEscKeydown 默认值导致的无法设置的问题DatePicker: 修复日期选择器在表单禁用后还能点击的问题...会导致手动输入显示 NaN 问题Select: 修复多选下换行提前占满一行的问题Select: 修复 input 高度 height 100% 导致换行高度异常的问题Pagination: 修复如果页面总数变更当前页数不变的问题...0.17.3React for Web 发布 0.36.2 FeaturesForm: 添加内置校验方法 whitespaceTable: 新增 indeterminateSelectedRowKeys ,用于控制选中行半选状态...iconColor 属性autofocus 更名为 focuscancelButtonText 更名为 action新增 leftIcon 支持左侧图标定制新增 value 和 default-value 控制输入框的值...0.9.0React for Mobile 发布 0.1.0适配移动端交互基于 React 16.x(全部基于 React Hooks 的 Functional Component)与其他框架/库(Vue / Angular

2.2K10

Angular 6.x 基础教程

simple-form -it -is # 新建组件,该组件使用内联模板和内联样式 在命令行窗口运行以上命令,将输出以下内容: CREATE src/app/simple-form/simple-form.component.spec.ts...(554 bytes) 即执行上述操作,创建了两个文件: simple-form.component.spec.ts —— 用于单元测试 simple-form.component.ts —— 新建的组件...除此之外,UPDATE src/app/app.module.ts 表示执行上述操作Angular CLI 会自动帮我们更新 app.module.ts 文件。..."sourceRoot": "src", "projectType": "application", "prefix": "app", } 当然你可以根据实际需求,自行更改默认的前缀配置...event, value) { console.log(event); console.log(value); } ngOnInit() {} } 成功运行以上代码,当我们点击按钮时,控制台将输出

15.6K20

Angular开发实践(二):HRM运行机制

引言 在angular-start项目中启用了模块热替换(HMR - Hot Module Replacement)功能,关于如何在angular-cli启用HRM,请查看HRM配置 那HMR是个什么东西呢...主要是通过以下几种方式,来显著加快开发速度: 保留在完全重新加载页面时丢失的应用程序状态 只更新变更内容,以节省宝贵的开发时间 调整样式更加快速 - 几乎相当于在浏览器调试器中更改样式 这一切是如何运行的...我们先看看具体的效果: 1、启动angular-start项目,在控制台你可以看到HRM已经启用的消息: ? image 2、然后通过浏览器控制台可以看到,第一次加载请求了所有的资源: ?...update由两部分组成: 更新的manifest (JSON) 一个或多个更新的chunk (JavaScript) manifest包括新的编译hash和所有的待更新chunk目录。...apply方法将所有被更新模块标记为无效。对于每个无效模块,都需要在模块中有一个更新处理函数,或者在它的父级模块们中有更新处理函数。否则,无效标记冒泡,并也使父级无效

1.7K70
领券