当前位置: 首页 > news >正文

angular12里面FormGroup做多个项目的相关check

FromFroup在鼠标失去焦点时做相关check,可以在group方法第二个参数的位置加一个对象参数

{ validator: this.checkPasswords }

在Angular 12中,可以使用formGroup来进行两个密码是否一致的检查。以下是一个示例:

首先,在组件的HTML模板中,创建一个formGroup,并在其中定义两个密码输入框:

<form [formGroup]="passwordForm"><label for="password">Password:</label><input type="password" id="password" formControlName="password"><label for="confirmPassword">Confirm Password:</label><input type="password" id="confirmPassword" formControlName="confirmPassword"><div *ngIf="passwordMismatch" class="error">Passwords do not match</div><button type="submit" [disabled]="passwordForm.invalid || passwordMismatch">Submit</button>
</form>

接下来,在组件的TS文件中,定义passwordFormpasswordMismatch属性,并在ngOnInit方法中创建formGroup并添加密码一致性的验证器:

import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';@Component({selector: 'app-password-check',templateUrl: './password-check.component.html',styleUrls: ['./password-check.component.css']
})
export class PasswordCheckComponent implements OnInit {passwordForm: FormGroup;passwordMismatch: boolean = false;constructor(private formBuilder: FormBuilder) { }ngOnInit() {this.passwordForm = this.formBuilder.group({password: ['', Validators.required],confirmPassword: ['', Validators.required]}, { validator: this.checkPasswords });}checkPasswords(group: FormGroup) {const password = group.controls.password.value;const confirmPassword = group.controls.confirmPassword.value;return password === confirmPassword ? null : { mismatch: true };}onSubmit() {// Handle form submission}
}

或者

import { Component } from '@angular/core';
import { FormGroup, FormBuilder, Validators, AbstractControl } from '@angular/forms';@Component({selector: 'app-password-check',templateUrl: './password-check.component.html',styleUrls: ['./password-check.component.css']
})
export class PasswordCheckComponent {passwordForm: FormGroup;constructor(private formBuilder: FormBuilder) {this.passwordForm = this.formBuilder.group({password: ['', Validators.required],confirmPassword: ['', Validators.required]}, { validator: this.passwordMatchValidator });}passwordMatchValidator(control: AbstractControl): { [key: string]: boolean } | null {const password = control.get('password');const confirmPassword = control.get('confirmPassword');if (password.value !== confirmPassword.value) {return { 'passwordMismatch': true };}return null;}
}

在上面的代码中,我们使用formBuilder创建了一个formGroup,并将checkPasswords方法作为验证器添加到formGroup中。checkPasswords方法比较了两个密码输入框的值,如果不一致,则返回一个包含mismatch属性的对象。

在HTML模板中,我们使用*ngIf指令来根据passwordMismatch属性的值显示错误消息。并且我们还在提交按钮上使用了[disabled]属性来禁用按钮,如果表单无效或密码不一致。

这样,当用户输入两个密码后,如果两个密码不一致,错误消息将显示,并且提交按钮将被禁用。只有当两个密码一致且表单有效时,才能提交表单。

相关文章:

angular12里面FormGroup做多个项目的相关check

FromFroup在鼠标失去焦点时做相关check&#xff0c;可以在group方法第二个参数的位置加一个对象参数 { validator: this.checkPasswords } 在Angular 12中&#xff0c;可以使用formGroup来进行两个密码是否一致的检查。以下是一个示例&#xff1a; 首先&#xff0c;在组件的…...

TypeScript 的发展与基本语法

目录 一、为什么什么是TypeScript&#xff1f; 1、发展历史 2、typescript与javascript 3、静态类型的好处 二、基础语法 1、基础数据类型 2、补充类型 3、泛型 4、泛型的高级语法 5、类型别名&类型断言 6、字符串/数字 字面量 三、高级类型 1、联合/交叉类型…...

macOS - 上编译运行 risc-v (spike)

文章目录 一、说明二、安装步骤三、测试 一、说明 本文根据以下文章改编&#xff1a; RISC-V 环境配置 https://decaf-lang.github.io/minidecaf-tutorial/docs/step0/riscv_env.html 相关链接&#xff1a; riscv-gnu-toolchain GNU toolchain for RISC-V, including GCC ht…...

Linux--线程地址空间

1.程序地址空间 先来就看这张图 这是一张程序地址分布的图&#xff0c;通过一段代码来证明地址空间的分布情况 编译结果&#xff1a; 可以看出的是&#xff0c;父子进程中对于同一个变量打印的地址是一样的&#xff0c;这是因为子进程以父进程为模板&#xff0c;因为都没有对数…...

华为OD机试 - 最佳植树距离 - 二分查找(Java 2023 B卷 100分)

目录 一、题目描述二、输入描述三、输出描述四、备注说明五、二分查找六、解题思路七、Java算法源码八、效果展示1、输入2、输出3、说明 一、题目描述 按照环保公司要求&#xff0c;小明需要在沙化严重的地区进行植树防沙工作&#xff0c;初步目标是种植一条直线的树带。 由于…...

RNN+LSTM正弦sin信号预测 完整代码数据视频教程

视频讲解:RNN+LSTM正弦sin信号预测_哔哩哔哩_bilibili 效果演示: 数据展示: 完整代码: import torch import torch.nn as nn import torch.optim as optim import numpy as np import matplotlib.pyplot as plt import pandas as pd from sklearn.preprocessing import…...

如何自己实现一个丝滑的流程图绘制工具(四)bpmn-js开启只读状态

背景 流程图需要支持只读状态和编辑状态 翻看官方案例源码&#xff0c;扒拉到了禁用的js代码 DisableModeling.js const TOGGLE_MODE_EVENT toggleMode const HIGH_PRIORITY 10001export default function DisableModeling(eventBus,contextPad,dragging,directEditing,e…...

字节跳动 Git 的正确使用姿势与最佳实践

版本控制Git 黑马&尚硅谷 Git的前世今生 方向介绍 为什么要学习Git 1.0 Git是什么 1.1 版本控制 1.1.1 本地版本控制 1.1.2 集中版本控制 1.1.3 分布式版本控制 我们已经把三个不同的版本控制系统介绍完了&#xff0c;Git 作为分布式版本控制工具&#xff0c; 虽然目前来讲…...

龙迅LT7911UX TYPE-C/DP转MIPI/LVDS,内有HDCP

1. 描述 LT7911UX是一种高性能的Type-C/DP1.4a到MIPI或LVDS芯片。HDCP RX作为HDCP中继器的上游端&#xff0c;可以与其他芯片的HDCP TX协同工作&#xff0c;实现中继器的功能。 对于DP1.4a输入&#xff0c;LT7911UX可以配置为1/2/4车道。自适应均衡使其适用于长电缆应用&#…...

Spearman Footrule距离

Spearman Footrule距离是一种用于衡量两个排列之间差异的指标。它衡量了将一个排列变换为另一个排列所需的操作步骤&#xff0c;其中每个操作步骤都是交换相邻元素。具体而言&#xff0c;Spearman Footrule距离是每个元素在两个排列中的排名差的绝对值之和。 这个指标的名字中…...

docker 安装 Wordpress 用lnmp搭建出现的故障

第一个故障就是mysql出现的故障了 你起mysql镜像是这么起的导致pid号用不了 docker run --namemysql -d --privileged --device-write-bps /dev/sda:10M -v /usr/local/mysql --net mynetwork --ip 172.20.0.20 mysql:lnmp 解决方法 docker run --namemysql -d --privilege…...

【C++入门到精通】C++入门 —— 继承(基类、派生类和多态性)

阅读导航 前言一、继承的概念及定义1. 继承的概念2.继承的定义⭕定义格式⭕继承关系和访问限定符⭕继承基类成员访问方式的变化 二、基类和派生类对象赋值转换三、继承中的作用域四、派生类的默认成员函数五、继承与友元六、继承与静态成员七、复杂的菱形继承及菱形虚拟继承⭕单…...

【Spring框架】Spring事务的介绍与使用方法

⚠️ 再提醒一次&#xff1a;Spring 本身并不实现事务&#xff0c;Spring事务 的本质还是底层数据库对事务的支持。你的程序是否支持事务首先取决于数据库 &#xff0c;比如使用 MySQL 的话&#xff0c;如果你选择的是 innodb 引擎&#xff0c;那么恭喜你&#xff0c;是可以支持…...

七夕特别篇 | 浪漫的Bug

文章目录 前言一、迷失的爱情漩涡&#xff08;多线程中的错误同步&#xff09;1.1 Bug 背景1.2 Bug 分析1.3 Bug 解决 二、心形积分之恋&#xff08;心形面积计算中的数值积分误差&#xff09;1.1 Bug 背景1.1.1 背景1.1.2 数学模型 1.2 Bug 分析1.2.1 初始代码1.2.2 代码工作流…...

数据结构双向链表

Hello&#xff0c;好久不见&#xff0c;今天我们讲链表的双向链表&#xff0c;这是一个很厉害的链表&#xff0c;带头双向且循环&#xff0c;学了这个链表&#xff0c;你会发现顺序表的头插头删不再是一个麻烦问题&#xff0c;单链表的尾插尾删也变得简单起来了&#xff0c;那废…...

解决政务审计大数据传输难题!镭速传输为政务行业提供解决方案

政务行业是国家治理的重要组成部分&#xff0c;涉及到国家安全、社会稳定、民生福祉等方面。随着信息技术的快速发展和革新&#xff0c;政务信息化也迎来了新一轮的升级浪潮。国家相继出台了《国家信息化发展战略纲要》《“十三五”国家信息化规划》《“十四五”推进国家政务信…...

redis 7高级篇1 redis的单线程与多线程

一 redis单线程与多线程 1.1 redis单线程&多线程 1.redis的单线程 redis单线程主要是指Redis的网络IO和键值对读写是由一个线程来完成的&#xff0c;Redis在处理客户端的请求时包括获取 (socket 读)、解析、执行、内容返回 (socket 写) 等都由一个顺序串行的主线程处理…...

GO语言:Worker Pools线程池、Select语句、Metex互斥锁详细示例教程

目录标题 一、Buffered Channels and Worker Pools1. Goroutine and Channel Example 线程和通道示例2. Deadlock 死锁3. Closing buffered channels 关闭通道4. Length vs Capacity 长度和容量5. WaitGroup6. Worker Pool Implementation 线程池 二、Select1. Example2. Defau…...

vue ui 创建项目没有反应

问题 cmd中输入 vue ui 没有反应 解决办法 vue ui命令需要vue3.0以上的版本才可以 1、查看当前版本 vue --version vue版本在3.0以下是没有ui命令的 2、查看版本所拥有的命令 vue -h 3、卸载之前版本的vue npm uninstall vue-cli -g 卸载完成&#xff0c;检查是否已经…...

go语言中channel类型

目录 一、什么是channel 二、为什么要有channel 三、channel操作使用 初始化 操作 单向channel 双向channel&#xff0c;可读可写 四、close下什么场景会出现panic 五、总结 一、什么是channel Channels are a typed conduit through which you can send and receive …...

Taotoken平台Token计费模式下的用量看板使用指南

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken平台Token计费模式下的用量看板使用指南 作为项目管理者&#xff0c;当团队同时接入多个大语言模型进行开发时&#xff0c…...

建模也有Skills了:MWORKS.Sysplorer Skills已开源至MoHub!

智能体能调用建模工具&#xff0c;并不等于它能稳定完成工程建模任务。在真实工程场景中&#xff0c;一个可交付的模型往往要经过需求理解、模型库选择、组件映射、参数补全、检查翻译、仿真验证、结果判读和交付归档。过去&#xff0c;这些环节高度依赖工程师经验&#xff1b;…...

告别上位机:用STM32的CAN总线直接对话Maxon EPOS4驱动器(附完整通信代码)

STM32直连Maxon EPOS4&#xff1a;CAN总线电机控制实战指南 在机器人关节控制、智能小车驱动等高精度运动控制场景中&#xff0c;Maxon EPOS4系列驱动器凭借其卓越性能成为工业级首选。但传统依赖PC上位机&#xff08;如EPOS Studio&#xff09;的调试方式&#xff0c;严重制约…...

书匠策AI毕业论文功能全拆解:论文小白也能“一键开挂“的秘密武器,你还不知道?

各位正在被毕业论文折磨得头秃的同学们&#xff0c;先别急着焦虑&#xff0c;今天咱们来聊一个能让你从"对着空白文档发呆"直接跳转到"论文框架清晰可见"的神器——书匠策AI。 别被"AI"两个字吓到&#xff0c;这玩意儿说白了就是你的论文私人助…...

从源码到蓝图:使用Visual Paradigm高效逆向工程UML图

1. 逆向工程的价值与Visual Paradigm定位 接手一个遗留项目时&#xff0c;最头疼的往往不是写新代码&#xff0c;而是理解前人留下的"天书"。上周我就遇到个典型场景&#xff1a;客户紧急要求给三年前的老系统加功能&#xff0c;但项目文档只有一张模糊的截图和半页残…...

为什么你的Perplexity搜不出科学健身计划?NIST认证信息检索模型原理首度公开

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;为什么你的Perplexity搜不出科学健身计划&#xff1f; Perplexity 作为一款以“实时网络检索大模型推理”为特色的AI搜索工具&#xff0c;其底层机制决定了它并非专为结构化健康决策而优化。当你输入“…...

初创团队如何利用 Taotoken 的 Token Plan 有效控制 AI 开发成本

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 初创团队如何利用 Taotoken 的 Token Plan 有效控制 AI 开发成本 对于资源有限的初创团队而言&#xff0c;在产品原型开发或内部工…...

5个核心功能技巧:用MPh实现COMSOL仿真自动化

5个核心功能技巧&#xff1a;用MPh实现COMSOL仿真自动化 【免费下载链接】MPh Pythonic scripting interface for Comsol Multiphysics 项目地址: https://gitcode.com/gh_mirrors/mp/MPh 你是一个文章写手&#xff0c;你负责为开源项目写专业易懂的文章。今天我们要介绍…...

LeetCode 每日一题笔记 日期:2026.05.16 题目:154. 寻找旋转排序数组中的最小值 II

LeetCode 每日一题笔记 0. 前言 日期&#xff1a;2026.05.16题目&#xff1a;154. 寻找旋转排序数组中的最小值 II难度&#xff1a;困难标签&#xff1a;数组、二分查找 1. 题目理解 问题描述&#xff1a; 给定一个可能存在重复元素的升序数组&#xff0c;经过1~n次旋转后&…...

Head Activator ;pPPGGSKVILF

一、基础信息多肽名称&#xff1a;头部激活因子三字母序列&#xff1a;Pyr-Pro-Pro-Gly-Gly-Ser-Lys-Val-Ile-Leu-Phe单字母序列&#xff1a;pPPGGSKVILF氨基酸数量&#xff1a;11 aa分子式&#xff1a;C54H84N12O14分子量&#xff1a;1125.34结构特征&#xff1a;N 端 Pyr&…...