使用材料芯片进行 Angular 电子邮件验证

Temp mail SuperHeros
使用材料芯片进行 Angular 电子邮件验证
使用材料芯片进行 Angular 电子邮件验证

设置 Angular 表单验证

使用 Angular 开发消息传递应用程序时,合并用户友好的电子邮件输入可以极大地增强用户交互。利用 Angular Material 芯片,该应用程序允许在单个表单字段中动态添加多个电子邮件地址。这里的主要挑战是确保每封输入的电子邮件在提交之前都遵循有效的格式。

这可能会变得复杂,因为用户可以一次输入多封电子邮件,并且每封电子邮件都必须单独验证。提供的代码片段概述了一个自定义验证器,旨在检查每封电子邮件的有效性。然而,在输入无效电子邮件或输入留空时有效显示错误消息仍然是改善用户体验的关键障碍。

命令 描述
Validators.pattern() 在 Angular 形式中用于强制字符串模式。在这里,它检查电子邮件输入是否与电子邮件验证的指定正则表达式匹配。
fb.group() Angular 的 FormBuilder 中的一种方法,用于使用提供的 FormControls 配置创建新的 FormGroup 实例。
MatChipInputEvent Angular Material 中的事件对象,提供对芯片输入事件值的访问,用于动态管理芯片数据。
isArray() Express-validator 中的验证命令用于检查输入是否为数组,这对于处理多个电子邮件条目至关重要。
isEmail() Express-validator 中的一种方法,用于验证所提供数组中的每个字符串是否采用有效的电子邮件格式。
validationResult() express-validator 的函数,它从请求中收集验证错误并将其包装在一个对象中,从而可以轻松响应错误。

探索 Angular Material Chips 电子邮件验证机制

Angular 前端脚本旨在使用 Angular Material Chips 有效管理多个电子邮件输入。核心功能围绕 FormBuilderValidators,用于创建和管理表单控件。这 fb.group() 函数使用各种控件初始化表单,每个控件都配置有特定的验证规则。对于电子邮件输入, Validators.pattern() 至关重要,因为它确保输入的每封电子邮件都与预定义的正则表达式匹配,从而过滤掉无效的电子邮件格式。

自定义验证器 emailsArrayValidator 是另一个关键组件。它通过从表单的“朋友”字段接收一系列电子邮件地址进行操作,并使用正则表达式检查每个地址 Array.filter()RegExp.test()。如果任何电子邮件不符合要求,它会返回一个错误对象,该对象会触发在 UI 中显示错误消息。这种方法可确保用户在提交表单之前收到无效电子邮件的通知,从而增强用户体验和数据完整性。

使用 Angular Material 芯片增强电子邮件输入

使用 Angular 和 TypeScript 实现前端

import { Component } from '@angular/core';
import { FormBuilder, FormControl, Validators } from '@angular/forms';
import { MatChipInputEvent } from '@angular/material/chips';
const REGEXP_EMAIL = /^(([^<>()[\\].,;:\\s@"]+(\\.[^<>()[\\].,;:\\s@"]+)*)|(".+"))@(([^<>()[\\].,;:\\s@"]+\\.)+[^<>()[\\].,;:\\s@"]{2,})$/i;
export function emailsArrayValidator(control: FormControl) {
  const emails: string[] = Array.isArray(control.value) ? control.value : [];
  const invalidEmails = emails.filter(email => !REGEXP_EMAIL.test(email.trim()));
  return invalidEmails.length === 0 ? null : { invalidEmails: true };
}
@Component({
  selector: 'app-invite-form',
  templateUrl: './invite-form.component.html',
})
export class InviteFormComponent {
  inviteForm = this.fb.group({
    name: ['', Validators.required],
    email: ['', [Validators.required, Validators.pattern(REGEXP_EMAIL)]],
    friends: [[], [Validators.required, Validators.minLength(1), emailsArrayValidator]],
  });
  constructor(private fb: FormBuilder) {}
  addFriend(event: MatChipInputEvent): void {
    const input = event.input;
    const value = event.value;
    if ((value || '').trim()) {
      const friends = [...this.inviteForm.value.friends, value.trim()];
      this.inviteForm.controls['friends'].setValue(friends);
      if (input) {
        input.value = '';
      }
    }
  }
  removeFriend(friend: string): void {
    const friends = this.inviteForm.value.friends.filter((f: string) => f !== friend);
    this.inviteForm.controls['friends'].setValue(friends);
  }
}
### 后端脚本:Node.js 和 Express ``html

Angular Material 芯片的服务器端电子邮件验证

使用 Node.js 和 Express 实现后端

const express = require('express');
const router = express.Router();
const { body, validationResult } = require('express-validator');
router.post('/validate-emails', [
  body('emails').isArray(),
  body('emails.*').isEmail()],
  (req, res) => {
    const errors = validationResult(req);
    if (!errors.isEmpty()) {
      return res.status(422).json({ errors: errors.array() });
    }
    res.send('Emails are valid');
});
const app = express();
app.use(express.json());
app.use('/api', router);
app.listen(3000, () => console.log('Server running on port 3000'));

使用有角材料芯片增强形状可用性

Angular Material Chips 提供了一种通用的方式来输入和显示电子邮件地址作为表单的一部分。该 UI 组件允许用户将每封电子邮件视为不同的实体(可以单独编辑或删除),从而增强了可用性。这在需要管理多封电子邮件的表单中特别有用,例如在邀请或多收件人消息传递系统中。通过利用芯片,用户可以直观地管理他们的输入,减少错误并提高整体表格的清晰度。

此外,Angular Material 框架与 Angular Forms 无缝集成,提供内置验证功能,可以使用自定义验证器进行扩展。这种集成简化了开发具有多重验证的复杂表单的过程,确保了强大且用户友好的界面。此外,Angular Material 提供的美学一致性有助于在整个应用程序中保持统一的设计语言,从而增强用户体验。

Angular 中的电子邮件验证:常见查询

  1. 如何使用 Angular Material Chips 验证电子邮件?
  2. 使用 Validators.pattern 使用正则表达式确保电子邮件在添加为芯片之前匹配正确的格式。
  3. Angular Material Chips 可以处理多封电子邮件吗?
  4. 是的,芯片可以配置为接受多封电子邮件,每封电子邮件在表单字段中表示为单独的芯片。
  5. 的作用是什么 FormControl 在管理芯片方面?
  6. FormControl 跟踪单个芯片的价值和验证状态,促进与 Angular 表单的集成。
  7. 如何显示无效电子邮件的错误消息?
  8. 错误消息使用动态显示 mat-error 对表单控件的验证状态做出反应的标记。
  9. 是否可以定制 Angular Material Chip 的外观?
  10. 是的,Angular Material 允许提供广泛的样式和主题选项,以便根据您的应用程序的设计要求定制芯片。

关于使用 Angular 增强电子邮件输入管理的最终见解

Angular Material Chips 提供了一种实用且具有视觉吸引力的解决方案,用于管理表单中的多个电子邮件输入。通过将这些芯片与 Angular 强大的表单处理和验证功能集成,开发人员可以提供清晰、无错误的用户体验。此设置不仅有助于减少用户输入错误,还有助于以直观的方式呈现这些错误,从而提高需要电子邮件输入管理的 Web 应用程序的整体可用性。