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

如何在表单之外检查angular中输入的有效性,而不检查ng-invalid?

在Angular中,可以使用模板驱动表单或响应式表单来检查输入的有效性。无论使用哪种类型的表单,都可以在表单之外进行有效性检查,而不仅仅是检查ng-invalid

对于模板驱动表单,可以使用ngModel指令来获取表单控件的引用,并通过该引用访问控件的有效性状态。以下是一个示例:

代码语言:txt
复制
<form #myForm="ngForm">
  <input type="text" name="myInput" [(ngModel)]="myValue" required>
</form>

<button (click)="checkValidity()">检查有效性</button>
代码语言:txt
复制
import { Component } from '@angular/core';

@Component({
  selector: 'app-my-component',
  templateUrl: './my-component.component.html',
  styleUrls: ['./my-component.component.css']
})
export class MyComponent {
  myValue: string;

  checkValidity() {
    const control = this.myForm.controls['myInput'];
    if (control.valid) {
      console.log('输入有效');
    } else {
      console.log('输入无效');
    }
  }
}

对于响应式表单,可以使用get()方法来获取表单控件的引用,并通过该引用访问控件的有效性状态。以下是一个示例:

代码语言:txt
复制
<form [formGroup]="myForm">
  <input type="text" formControlName="myInput" required>
</form>

<button (click)="checkValidity()">检查有效性</button>
代码语言:txt
复制
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';

@Component({
  selector: 'app-my-component',
  templateUrl: './my-component.component.html',
  styleUrls: ['./my-component.component.css']
})
export class MyComponent implements OnInit {
  myForm: FormGroup;

  constructor(private formBuilder: FormBuilder) { }

  ngOnInit() {
    this.myForm = this.formBuilder.group({
      myInput: ['', Validators.required]
    });
  }

  checkValidity() {
    const control = this.myForm.get('myInput');
    if (control.valid) {
      console.log('输入有效');
    } else {
      console.log('输入无效');
    }
  }
}

这样,无论是模板驱动表单还是响应式表单,都可以在表单之外检查输入的有效性。

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

相关·内容

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

一、Overview angular 入坑记录笔记第三篇,介绍 angular表单控件相关概念,了解如何在 angular 创建一个表单,以及如何针对表单控件进行数据校验。...四、Step by Step 4.1、表单简介 用来处理用户输入,通过从视图中捕获用户输入事件、验证用户输入是否满足条件,从而创建出表单模型修改组件数据模型,达到获取用户输入数据功能 模板驱动表单...响应式表单表单数据发生变更时,FormControl 实例会返回一个新数据模型,不是直接修改原来数据模型 4.2、模板驱动表单 通过使用表单专属指令(例如 ngModel 进行双向数据绑定)...在使用 ngModel 进行模板绑定时,angular 在 form 标签上自动附加了一个 NgForm 指令,因为 NgForm 指令会控制表单带有 ngModel 指令和 name 属性元素,...4.2.3、数据有效性验证 某些时候需要对于用户输入信息做有效性验证,此时可以在控件上添加上原生 HTML 表单验证器来设定验证条件,当表单控件数据发生变化时,angular 会通过指令方式对数据进行验证

18.9K20

AngularDart4.0 指南- 表单

一路上你将学习如何: 用组件和模板构建一个Angular表单。 使用ngModel创建读取和写入输入控制值双向数据绑定。 跟踪状态变化和表单控件有效性。...模板驱动形式 您可以通过使用本页描述特定于表单指令和技术在Angular模板语法编写模板来构建表单。 您也可以使用响应式(或模型驱动)方法来构建表单。...使用name和类绑定来有条件地分配适当表单有效性类。 临时将另一个名为spy模板引用变量添加到Name 标记,并使用它显示输入CSS类。...如果没有Angular帮助,你需要做什么才能将按钮启用/禁用状态连接到表单有效性? 对你来说,这很简单: 在(增强表单元素上定义一个模板引用变量。 在多处按钮引用该变量。...输入控件(通过模板引用变量访问)valid 属性,用于检查控件有效性以及显示/隐藏错误消息。 NgForm.form有效性来设置提交按钮启用状态。

17.4K30

Angularjs表单验证

下面来看看我们可以在input设置哪些验证: 必填 验证是否已输入文字,只需在标签上加上required: 最小长度 验证至少输入{number...例如,我们要验证我们用户名是可用(在数据库不重复)。...要做到这一点,我们将实现一个指令,它在输入字符变化时触发一个Ajax请求: var app = angular.module('validationExample', []); app.directive...当一个字段是无效,.ng-invalid将被应用到这个字段上。...点击提交后显示验证信息 要在用户试图提交表单时显示验证,你可以通过在scope设置一个'submitted'值,并检查该值来控制显示错误。 让我们来看看第一个例子,只有在点击提交表单时才显示错误。

2.1K10

angularjs输入验证

AngularJS表单验证可以让你从一开始就写出一个具有交互性和可相应现代HTML5表单。 在AngularJS,有许多表单验证指令。...$error 如果验证失败,则此属性将是true如果它是false,那么该值通过验证。...无害一些样式 当AngularJS处理表单验证时,它将根据验证状态增加一些特定class属性。这些class被命名为类似的属性,我们可以检查。...$setValidity('unique', false); }); }); } } }]); 当表单输入是有效时,它将发送POST api/check/username请求到服务器来检查用户名是否可用...点击提交后显示验证信息 要在用户试图提交表单时显示验证,你可以通过在scope设置一个’submitted’值,并检查该值来控制显示错误。

1.2K30

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

首先我解释下为啥需要 ControlValueAccessor 接口以及它在 Angular 是如何使用。...FormControl 和 ControlValueAccessor 如果你之前使用过 Angular 表单,你可能会熟悉 FormControl ,Angular 官方文档将它描述为追踪单个表单控件值和有效性实体对象...input,textarea 进行交互,并且很有可能需要自定义一个表单控件作为 Angular 组件不是使用原生表单控件,通常自定义表单控件会封装一个使用纯 JS 写控件 jQuery UI's...本文我将使用原生表单控件术语来区分 Angular 特定 formControl 和你在 html 使用表单控件,但你需要知道任何一个自定义表单控件都可以和 formControl 指令进行交互,不是原生表单控件...官方文档是这么描述(译者注:为清晰理解,该描述翻译): ControlValueAccessor acts as a bridge between the Angular forms API and

3.8K20

深入讲解 ASP+ 验证

我们研究了大量数据输入表单,试图找到可以适用于尽可能多表单一种解决方案。我们发现,数据输入表单具有许多有趣特性: 尽管错误信息或图标经常与输入元素相邻,但是它们几乎总是位于表不同单元格。...如果某个字段为空,站点通常会显示与该条目无效时不同信息或图标。 许多有效性检查可以很好地代替常用表达式。 验证通常是基于两个输入之间比较结果。...从服务器角度来说,客户端验证只意味着验证控件将不同内容发送到 HTML 。除此之外,其事件序列完全相同。服务器端检查仍然执行。...输入字段转换成所需数据类型并进行比较。 第三步看起来有些不符合直觉。之所以这样评估,是因为如果验证器同时检查多个字段有效性,很难为该验证器写出有意义错误信息。...Display=None 可以用来指定验证器直接显示任何内容,但是仍然进行评估,仍然影响总体有效性,并且仍可以将错误放在客户机和服务器上摘要

5.3K10

再谈angularJS数据绑定机制及背后原理—angularJS常见问题总结

两者区别在于页面没有加载完毕 {{val}} 会直接显示到页面,直到 Angular 渲染该绑定数据(这种行为有可能将 {{val}} 让用户看到); ng-bind 则是在 Angular 渲染完毕后将数据显示...当你写下表达式{{ val }}时,AngularJS在幕后会为你在scope模型上设置一个watcher(表达式将被 Angular 编译成一个监视函数),它用来在数据发生变化时候更新view。...所以说不要怀疑用户在输入表单angular 会不会监听页面左边导航栏变化。 如何优化脏检查与运行效率 脏检查慢吗? 说实话脏检查效率是不高,但是也谈不上有多慢。简单数字或字符串比较能有多慢呢?...然而入上文所说,肉眼不可见代表不会跑脏检查。...单元测试强调就是孤立其他依赖元素,POJO恰恰满足这个条件,可以单纯去测试这个函数输入输出,不用费劲去模拟一个假$scope。

7.8K40

一个Angular 5教程:一步一步指导实现你第一个Angular 5应用程序

Angular告诉我们,我们仍然需要在Card组件定义我们输入。...我们需要导入ngModel到我们AppModule。但从哪里?如果我们检查文档,我们可以看到它在Angular Forms模块。...使用表单Angular中使用表单有两种方法 - 一种是模板驱动,我们已经在使用其中最有价值部分:ngModel用于双向绑定。但是Angular形式不仅仅关于模型价值,也关系到有效性。...目前,我们在HostListener函数检查NewCardInput有效性。让我们将其移至更多模板驱动表单。...在代码定义了反应式表单不是模板驱动表单,因此我们更改NewCardInput组件代码: [...] import {FormBuilder, FormGroup, Validators} from

42.5K10

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

使用HTML表单元素(和)双向绑定会很方便。 但是,没有原生HTML元素遵循x值和xChange事件模式。...Angular为所有基本HTML表单元素提供值访问器,Forms指南展示了如何绑定到它们。...这些元素所有组件都保留在内存Angular可能会继续检查更改。 您应用可能会占用相当可观计算资源,会降低用户不可见性能。...heroForm值是什么? heroForm是一个Angular NgForm指令引用,可以跟踪表单每个控件值和有效性。 原生元素没有form属性。...模板引用变量警告说明 模板引用变量(#phone)与模板输入变量(let phone)不同,您在*ngFor可能看到那样。 了解“结构指令”指南中差异。 引用变量范围是整个模板。

29.9K20

angular基础面试题_java web面试题

angular 生命周期顺序 ngOnChanges: Angular 设置或重新设置数据绑定输入属性时响应。...在 ngOnInit() 之前以及所绑定一个或多个输入属性值发生变化时都会调用 ngOnInit: 在 Angular 第一次显示数据绑定和设置指令/组件输入属性之后,初始化指令/组件。...,在ngDoCheck之后 ngAfterContentChecked:每当 Angular 检查完被投影到组件或指令内容之后调用,在ngAfter...之后调用 ngAfterViewInit:当...如果使用外部HTML,也就是来自数据库或应用程序之外地方,那么就需要清理它。 不要将外部网址放在应用程序,除非它是受信任。避免网址重定向,除非它是可信。 考虑使用AOT编译或离线编译。...本站仅提供信息存储空间服务,拥有所有权,承担相关法律责任。发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

13K50

10个小技巧助您写出高性能ASP.NET Core代码

第一次,您将请求服务器并获得响应,此响应将在某个地方存储一段时间(将有一些到期),下一次当您对相同响应进行调用时,您将首先检查您是否已经在第一个请求获得了数据并存储在某个地方,如果是的话,您将检查是否已经获得了数据...经常对不经常变化数据设置缓存。 不要试图提前获取不需要数据,这会增加响应负载,并导致应用程序加载速度变慢。 优化自定义代码 除了业务逻辑和数据访问代码之外,应用程序可能还有一些自定义代码。...始终检查长期运行任务是否应该异步执行,不影响其他进程。 您可以使用实时客户端-服务器通信框架,:SignalR,来进行异步工作。...您可以使用EF Core一些可用功能,可以帮助您在数据库端筛选数据操作,:WHERE,Select等。 使用Take和Skip来获取我们所必须要显示数量记录。...尝试一次加载所有客户端资源,样式、js/css。您可以首先使用小型化缩小文件,然后将这些文件打包到一个文件,这将加快加载速度并减少HTTP请求数量。

4.5K31

AngularJS 1 教程

---- JS Bin on jsbin.com 同样一个简单需求,可以明显看得出jQuery业务代码,直接操作DOM代码揉杂在一块,AngularJS代码关心业务逻辑,HTML描述界面非常清晰...还有相对反直觉一点是, 如果页面交互复杂,开发人员对DOM操作精通,jQuery遍地$()使用方式很容易造成性能问题 。 遍地所谓jQuery插件严重使得代码膨胀,性能低下!!!...,相应view(表单)变化了,也会自动同步到model。...从使用角度来说脏检查 ---- JS Bin on jsbin.com 上面Demo timeout例子,通过原生setTimeout方法修改变量,并没有更新到视图上,1000毫秒setTimeout...因此AngularJS脏检查很容易导致性能问题。因此 限制不必要监控数量,建议超过2000个 避免避免深度比较、复杂逻辑。

4.6K30

Angular12个经典问题,看看你能答对几个?(文末附带Angular测试)

例如,ngOnint界面的OnInit方法,这个方法必须在组件实现。  一部分事件适用于组件/指令,少数事件只适用于组件。...它是如何在Angular 2工作Angular 2不具有双向digest cycle,这是与Angular 1不同。...如何在Angular 2应用程序中使用codelyzer? 所有企业应用程序都会遵循一组编码惯例和准则,以更好方式维护代码。...如何在Angular 2启用延迟加载? 大多数企业应用程序包含用各式各样用于特定业务案例模块。捆绑整个应用程序代码并完成加载,会在初始调用时,产生巨大性能开销。...其中一些是: 避免为你组件使用/注入动态HTML内容。 如果使用外部HTML,也就是来自数据库或应用程序之外地方,那么就需要清理它。 不要将外部网址放在应用程序,除非它是受信任

17.3K80

HTML 表单和约束验证完整指南

最好显示标签不是强迫用户记住该字段想要什么! 输入行为 字段类型和约束属性会改变浏览器输入行为。例如,number输入显示移动设备上数字键盘。...范围之外值。...); 处理程序可以使用checkValidity()orreportValidity()方法检查整个表单是否有效,true当表单所有输入都有效时返回。...如果是false,则以下一项或多项属性将是true: 有效性状态描述.badInput浏览器无法理解输入.customError已设置自定义有效性消息.patternMismatch该值与指定pattern...形式技巧 表单是所有 Web 应用程序基础,开发人员花费大量时间处理用户输入。约束验证得到很好支持:浏览器可以处理大多数检查并显示适当输入选项。 建议: 尽可能使用标准 HTML 输入类型。

8.2K40

HTML基础-输入类型与表单验证

HTML表单元素和输入类型是网页交互核心,表单验证则是确保用户输入数据有效性和安全性重要手段。本文将探讨输入类型使用,以及在表单验证中常见问题、易错点和如何避免它们,同时提供代码示例。...输入类型 常见输入类型 text:默认文本输入框。 email:用于电子邮件地址,会自动进行格式检查。 password:用于密码输入,内容会被隐藏。...指定输入类型:email、url等,浏览器会自动进行基本验证。 利用pattern属性:添加正则表达式验证。...} }); 结语 HTML输入类型和表单验证是构建用户友好且安全表单基础。...理解并正确使用它们,可以提高用户体验,减少无效数据,同时增强网站安全性。通过避免上述问题,你可以创建更健壮、更有效表单

9610

html下拉框设置默认值_html下拉列表框默认值

8.3多行文本输入框 8.4下拉列表框、 在表单,通过和标记可 以在浏览器设计一个下拉式列表或带有滚动 …… > 指定要创建控件类型 Text 默认值,创建一个单行文本输入控件 Password...创建一个密码框输入控件 Checkbox 创建一个复选框控件 Radio 创建一个单选按钮控件 Submit…… 7.要在表单添加一个默认时为选中状态复选框,应使用语句 ⑨。...HTML 基本语法与基本结构(重点) 标记…… 2 【案例16】趣味选择题 案例引入 学习表单核心是学习表单控件,HTML 语言提供了一系列表单控件,用于定义不同 表单功能,文本输入框、下拉列表...必须定义度量范围,既可以在 text ,也可… 如何在 EXCEL 建立下拉列表 1、 在本工作簿空白列输入下拉菜单内容,然后选中后右键: 创建列表如下: 复制“=AC1:AC10” 2、 选中要建下拉菜单...本站仅提供信息存储空间服务,拥有所有权,承担相关法律责任。发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

33.7K21
领券