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

Angular 7:当模型的属性发生变化时如何重新验证控件

在Angular 7中,当模型的属性发生变化时,可以通过使用响应式表单来重新验证控件。响应式表单是Angular提供的一种强大的表单处理方式,它基于RxJS Observables和FormControl类。

要重新验证控件,首先需要创建一个FormControl对象来表示表单控件。FormControl对象可以与模型属性进行绑定,并且可以通过订阅其valueChanges属性来监听模型属性的变化。

以下是一个示例代码,演示了如何重新验证控件:

  1. 首先,在组件类中导入必要的模块和类:
代码语言:txt
复制
import { Component } from '@angular/core';
import { FormControl, Validators } from '@angular/forms';
  1. 在组件类中创建一个FormControl对象,并将其与模型属性进行绑定:
代码语言:txt
复制
@Component({
  selector: 'app-example',
  template: `
    <input type="text" [formControl]="nameControl">
    <button (click)="changeName()">Change Name</button>
  `
})
export class ExampleComponent {
  nameControl = new FormControl('', Validators.required);
  name = '';

  changeName() {
    this.name = 'New Name';
    this.nameControl.setValue(this.name);
  }
}

在上面的示例中,nameControl是一个FormControl对象,它与一个文本输入框进行绑定。name属性表示模型的属性。changeName方法用于改变模型的属性值,并通过setValue方法将新的属性值设置给nameControl。

  1. 在模板中使用FormControl对象来验证控件:
代码语言:txt
复制
<input type="text" [formControl]="nameControl">

在上面的示例中,我们将nameControl绑定到文本输入框的formControl属性上。这样,当文本输入框的值发生变化时,nameControl会自动进行验证。

通过以上步骤,当模型的属性发生变化时,Angular会自动重新验证控件。如果控件的值不符合验证规则,可以通过FormControl对象的valid属性来判断控件的验证状态。

对于Angular 7中的表单验证,推荐使用腾讯云的云开发服务。云开发提供了一套完整的云端一体化解决方案,包括云函数、数据库、存储、云托管等服务,可以帮助开发者快速构建和部署应用。您可以通过以下链接了解更多关于腾讯云云开发的信息:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

一、Overview angular 入坑记录笔记第三篇,介绍 angular 中表单控件相关概念,了解如何angular 中创建一个表单,以及如何针对表单控件进行数据校验。...响应式表单 建立表单 由组件隐式创建表单控件实例 在组件类中进行显示创建控件实例 表单验证 指令 函数 在表单数据发生变更,模板驱动表单通过修改 ngModel 绑定数据模型来完成数据更新,...4.2.3、数据有效性验证 某些时候需要对于用户输入信息做有效性验证,此时可以在控件上添加上原生 HTML 表单验证器来设定验证条件,表单控件数据发生变化时,angular 会通过指令方式对数据进行验证...在数据验证失败情况下,对于系统来说,表单是不允许提交,因此可以将提交事件绑定到表单 ngSubmit 事件属性上,通过模板引用变量形式,在提交按钮处进行数据有效性判断,无效,禁用表单提交按钮...因此这里验证方法需要在定义控件作为 FormGroup 参数传入 与单个字段验证方式相似,通过实现 ValidatorFn 接口,表单数据有效,它返回一个 null,否则返回 ValidationErrors

18.9K20

AngularDart4.0 指南- 表单 顶

您可以创造性地设计控件,将它们绑定到数据,指定验证规则和显示验证错误,有条件地启用或禁用特定控件,触发内置视觉反馈等等。 Angular通过许多重复,模板化任务使处理过程变得简单。...touched和untouched指示控件是否被访问过。 valid反映了控制值有效性。 样式控件 有效控制属性是最有趣,因为一个控制值无效,你想发送一个强烈视觉信号。...控件是“原始隐藏消息实现了这个目标。 您向表单添加一个“清除”按钮,您会看到此选项重要性。 英雄Alter Ego是可选,所以你可以不用关那个。 英雄power选择是必需。...提交标志变为真,表格消失。 您将看到表格中显示英雄模型值(只读)。 ? 该视图包含一个编辑按钮,其单击事件绑定将清除提交标志。 您单击编辑按钮,该表消失,并且可编辑表单重新出现。...用于验证和表单元素更改跟踪NgControl 指令。 输入控件(通过模板引用变量访问)valid 属性,用于检查控件有效性以及显示/隐藏错误消息。

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

    ControlValueAccessor要处理就是实现 Model -> View,View -> Model 之间数据绑定,其具体作用是: 把 form 模型中值映射到视图中 视图发生变化时,...(isDisabled: boolean): void; } writeValue:在初始化时候将formControl值传递给原生表单控件(即,将模型新值写入视图或 DOM 属性中); registerOnChange...:用来获取原生表单控件值更新通知Angular表单控件更新函数(即,设置控件接收到 change 事件后,调用函数) registerOnTouched:用来获取通知用户正在交互函数(即,设置控件接收到...(isDisabled: boolean):设置DISABLED状态执行方法。即,控件状态变成 DISABLED 或从 DISABLED 状态变化成 ENABLE 状态,会调用该函数。...4.x 自定义表单控件 【荐】深入Angular自定义表单控件 Angular集成Editor.mdMarkdown编辑器,支持NgModel双向绑定

    5.2K20

    angular面试题及答案_angular面试

    生命周期钩子 生命周期顺序,见下图: ngOnChanges:组件数据绑定输入属性发生变化是触发,该方法接收一个SimpleChanges对象,包括当前值和上一个属性值。...ngOninit:初始化指令或组件,在angular第一次显示展示组件绑定属性后调用,该方法只会调用一次 ngDocheck:检测 ngAfterContentInit:把内容投影进组件之后调用,...observable或promise返回data,我们使用一个临时属性来保存内容。稍后,我们将相同内容绑定到模板。...没有配置base标签,加载应用会失败。 23....是输入属性发生变化时候调用,并且ngOnInit是在ngOnchanges执行之后才调用,而constructor是在组件实例化时候就调用了,也就是说,在constructor中是取不到输入属性

    11.1K120

    Angular开发实践(五):深入解析变化监测

    什么是变化监测 在使用 Angular 进行开发中,我们常用到 Angular绑定——模型到视图输入绑定、视图到模型输出绑定以及视图与模型双向绑定。...简单来说,变化监测就是 Angular 用来监测视图与模型之间绑定值是否发生了改变,监测到模型中绑定值发生改变,则同步到视图上,反之,监测到视图上绑定值发生改变,则回调对应绑定函数。...点击change name按钮,改变了 name 属性值,这时模板视图显示内容也发生了改变。...ngOnInit 函数里向服务器端发送了一个 Ajax 请求,这个请求返回结果,同样会改变当前模板视图上绑定 name 属性值。...变化监测处理机制 通过上面的介绍,我们大致明白了变化检测是如何被触发,那么 Angular变化监测是如何执行呢?

    1.8K80

    angularjs 表单验证

    借助这些属性,我们可以对表单做出实时响应。 可以使用formName.inputFieldName.property格式访问这些属性。 修改表单 布尔型属性且仅当用户实际已经修改表单。...$valid 未通过验证表单 formName.inputFieldName.$invalid 最后两个属性在用于DOM元素显示或隐藏是特别有用。...同时,如果要设置特定class,他们也非常有用。 错误 这是AngularJS提供另外一个非常有用属性:$error对象。它包含当前表单所有验证内容,以及它们是否合法信息。...例如某个字段中输入非法,.ng-invlid类会被添加到这个字段上。 你可以编辑自己喜欢CSS . 你可以私有定制化这些类来实现特定场景应用....$formatters $formatters值是一个由函数组成数组,其中函数会以流水线形式在数据模型发生变化时被逐一调用。

    6.7K70

    2、Angular JS 学习笔记 – 双向数据绑定和Scope概念

    Angular数据绑定是自动从模型和视图间同步数据,Angular这种数据绑定实现让你可以将应用中模型和视图数据看作一个源, 视图在任何时候都是对模型一个投影,模型发生变化,相关视图也会发生变化...作用域特点: 作用域提供$watch接口监测模型变化 作用域提供$apply接口传播angular体系外任何模型变化 作用域可以是嵌套限制访问应用组件属性,同时提供共享模型属性。...创建树形结构平行于dom结构; angular计算{{name}},它首先去作用域查看name属性,如果没有找到,就从父级作用域寻找,一直到root作用域。...回调执行完成后,浏览器重新渲染dom,然后返回继续等待更多事件。 浏览器调用js代码不在angular执行上下文,意味着angular无法发现模型修改。...$watchCollection(watchExpression,listener))检测一个数组或一个对象内变化:项目被添加,删除,或者重新排序时会被监测到。

    13.2K20

    详解ANGULAR2组件中变化检测机制(对比ANGULAR1脏检测)

    OnChanges 组件任何输入属性发生变化时候,我们可以通过组件生命周期提供钩子 ngOnChanges来捕获变化内容。...'; } } 当你点击 '改变Text属性' 按钮,发现页面中 p 元素内容会从 'Semlinker' 更新为 'Text属性已改变' ,但控制台却没有输出任何信息,这验证了我们刚才给出结论...接下来我们来介绍一下 Immutable : Immutable 即不可变,表示数据模型发生变化时候,我们不会修改原有的数据模型,而是创建一个新数据模型。...复选框被选中,detach() 方法将被调用,之后组件及其子组件将不会被检查。取消选择,reattach() 方法会被调用,该组件将会被重新添加到变化检测器树上。...Observables 使用 Observables 机制提升性能和不可变对象类似,但发生变化时候,Observables 不会创建新模型,但我们可以通过订阅 Observables 对象,在变化发生之后

    2.9K90

    Angularjs基础(七)

    AngularJS表单     AngularJS表单输入控件集合 HTML控件     一下HTML input 元素被称为HTML 控件:         input 元素         ...ng-model 指令绑定了两个inputh 元素到模型user 对象。           ...novalidate 属性在应用中不是必须,但是你需要在 AngularJS 表单中使用,用于重写标准 HTML5 验证。...AngularJS输入验证     AngularJS表单和控件可以验证输入数据。 输入验证     AngularJS表单和控件可以提供验证功能,并对用户输入非法数据惊醒警告。...模型对象有两个属性: user 和email     我们使用了ng-show指令,color:red 在邮件是$dirty 或$invalid才显示     属性:       $dirty

    2K70

    Mac开发之 Cocoa 绑定 入门

    -视图-控制器完全没有必要,特别是控制器仅仅是在模型与视图之间传递信息(比如一个UILabel需要显示文本来自数据模型内容),为了解决这种情况,苹果公司在OSX中引入了Cocoa绑定....3.绑定简单使用方式 3.1 视图(View)绑定到模型(Model) 将视图绑定到模型对象,就是告诉视图需要显示内容来自哪里(通常是数据模型对象某个属性),以及什么时候更新显示内容.数据模型某一属性值发生改变...绑定也可以反向工作.比如有一个可编辑控件,当用户修改内容,绑定系统会用新内容更新数据模型对应属性值....slider控件continuous属性即可. (7) 设置持续更新 设置slidercontinuous 我们发现应用启动Label显示内容为0,我们尝试通过改变sonscore值来看看结果...(设置slider控件enable属性绑定),大体如下图: 绑定sliderEnabled到默认系统 启动应用,改变复选框状态,注意滑块启用或禁用状态,然后退出应用并重新启动,注意观察复选框,

    1.9K20

    Vue相关前端面试题,每道题都很经典~

    问题目录 ①:说说Vue和Angular、ReactJS相同点和不同点 ②:简单描述一下Vue中MVVM模型 ③:v-if和v-show指令有什么区别?...与React区别: ●组件响应式渲染 React组件数据状态发生变化时,它会以该组件为根,重新渲染整个组件子树;而Vue不只去渲染需要渲染组件。...Q 简单描述一下Vue中MVVM模型 Vue是以数据为驱动,Vue自身将DOM和数据进行绑定,一旦创建绑定,DOM和数据将保持同步,每当数据发生变化,DOM会跟着变化。...DOM Listeners监听页面所有View层DOM元素变化,发生变化,Model层数据随之变化;Data Bindings监听Model层数据,数据发生变化,View层DOM元素随之变化...keep-alive指令允许把切换出去组件保留在内存中,并保留它状态或避免重新渲染。 Q 为什么组件中data属性值必须是一个函数?

    11.1K30

    如何使用WijmoJS 纯前端设计器,快速生成 Angular 应用

    WijmoJS VSCode Designer还提供了一个独立命令,可以在单独选项卡中打开设计图面,您可以在其中使用示例数据实例化控件,自定义其属性,并生成可以复制到源文件中Angular标记。...设计图面上FlexGrid 表格控件以设计模式显示,这意味着您无法直接对其进行滚动,调整大小或以其他方式操作行为,而是使用设计器右侧属性”窗格来操作控件对象模型。...对于具有集合控件(例如网格列),设计器允许您添加,删除和修改单个成员。 在“属性”窗格中找到columns属性,然后单击属性编辑器右侧“显示项目”按钮以显示Angular标记中定义八个列。...但是,您应该知道扩展会记住调用它Angular标记文档范围。 如果随后修改了原始源文件,则应重新访问CodeLens链接以刷新关联设计器选项卡。...但是,扩展更新源文件,将保留原始控件标记中定义任何现有事件处理程序。 设计器独立命令会记住当前工作空间上下文中可视化设计界面的状态,即使您关闭并重新打开VS代码也是如此。

    5.4K40

    (转) 别再对 Angular 表单 ControlValueAccessor 感到迷惑

    网上有大量文章描述如何实现这个接口,但很少说到它在 Angular 表单架构里扮演什么角色,如果你不仅仅想知道如何实现,还想知道为什么这样实现,那本文正合你胃口。...),你需要把更新值传给这个回调函数,这样对应 Angular 表单控件值也会更新(译者注:这一点可以参考 Angular 它自己写 DefaultValueAccessor 写法是如何把 input...控件每次更新值传给回调函数,L52 和 L89);使用 registerOnTouched 方法来注册用户和控件交互触发回调(译者注:你可能会参考 L95)。...下图是 Angular 表单控件 如何通过 ControlValueAccessor 来和原生表单控件交互(译者注:formControl 和你写或者 Angular 提供 CustomControlValueAccessor...组件封装器 由于 Angular 为所有默认原生控件提供了控件值访问器,所以在封装第三方插件或组件,需要写一个新控件值访问器。

    3.8K20

    前端开发报表工具所必须三大能力

    数据分析一直以来都是业务决策中非常重要一环,在数字化时代尤其如此。然而,数据分析只有在持续监控和可视化下才能真正发挥作用。如何采用使用一些高效工具来做相应数据分析?...如下图示例: 数据源设置好后,可以做对应数据集,数据集中JSON查询是需要根据JSONPATH进行编写,大家在创建记得先编写好对应JSONPATH在进行验证操作,如果JSONPATH是正确,...那么验证后查询字段就会显示出对应字段,如下图示: 点击验证按钮后也可以增加计算字段,可以在数据集中对数据进行处理,比如手动添加一个计算字段,用来展示数量*2值,如下图示: 此时记得不要点击验证,...比如下图,一个文本框嵌套进列表,预览列表会根据数据集数据进行展示。...在V4.0版本上引入了高级布局方式,支持网格状模式排列列表,提供属性设置每行上显示多少列,同时支持设置排列方向,包括从上到下、从左到右方式排列,这样大家就可以更灵活排布组件进行报表设计。

    42930

    Angular 从入坑到挖坑 - 组件食用指南

    ,可以通过 angular 内置模板语法与 html 元素进行结合,从而告诉 angular 如何根据我们应用逻辑和数据来渲染页面 4.1.2.1、插值表达式 插值表达式可以将组件中属性值或者是模板上数据通过模板表达式运算符进行计算...="expr">NgIf 结构型指令 expr 属性为 true ,这个元素则会显示在页面上,当属性值为 false ,则不显示该元素 ngIf 指令并不是通过使用 css 样式来隐藏元素...,当值为 false ,则这些元素会从 dom 中被销毁,并且所有监听该 dom 元素事件会被取消,重新显示该元素,会重新执行初始化过程 与销毁元素不同,对于隐藏元素来说,所有的元素监听事件还会执行监听...index 属性在每次迭代中,会获取到条数据索引值 渲染数据发生改变 4,会导致 dom 元素重新渲染,此时可以采用 trackBy 方式,通过在组件中添加一个方法,指定循环需要跟踪属性值...,此时渲染数据发生改变,只会重新渲染变更了指定属性数据 不使用 trackBy 跟踪属性 <p *ngFor="let item of products; let

    15.8K30
    领券