angular服务中使用模版html,在Angular 5中使用模板驱动的表单进行验证

本文详细介绍了如何在Angular5中使用模板驱动的表单进行验证。首先,通过创建一个用户模型来避免命名冲突。接着,通过添加`ngModel`和`required`属性实现用户名字段的验证,并展示错误消息。然后,扩展验证到电子邮件和其他字段,确保输入有效。最后,添加了一个注册功能。文章还提到了后续将探讨自定义验证器的实现。
摘要由CSDN通过智能技术生成

介绍

在这篇文章中,我们将看到如何在Angular 5中使用模板驱动的表单进行验证; 这只是一种可以遵循的不同方法,正如我们在前一篇文章中讨论的另一种方式。在本文结尾处,您将了解如何使用模板驱动表单在Angular 5应用程序中实现验证。本文是开发Angular 5 App系列的延续 ; 如果你还没有浏览以前的帖子,我强烈建议你这样做。您可以在下面找到以前帖子的链接。我希望你会喜欢这篇文章。

ab2668bf7abd15391e47f77b68c24524.png

背景

验证在所有应用程序中都起着至关重要的作用,无论它以何种语言开发。由于它是一个重要部分,因此有很多方法可以实现它。我们将在这里看看模板驱动的表单方法。

使用代码

建议从GitHub克隆该项目,以便您可以尝试自己的一切。现在让我们继续写一些代码。

安装Bootstrap

在我们开始之前,让我们在我们的应用程序中安装bootstrap。

PS F:\My Projects\ng5> npm install bootstrap --save

在我们使用Angular CLI开发这个应用程序时,我们可以在我们的Angular-CLI.json文件中添加对Bootstrap的引用。添加引用后,该文件的样式部分将看起来像下面的代码。

"styles": ["styles.css","../node_modules/bootstrap/dist/css/bootstrap.min.css"]

请注意,在我们的应用程序中还有很多其他的配置Bootstrap的方法,但是在这里解释它们已经超出了本文的范围。

将ngForm导入到变量

让我们清理我们的注册组件中的代码,并添加一个新的表单,其中有一个表单变量,它可以保存我们表单的值。有很多事情可以用这个变量来做,现在让我们假设它是我们的模型值容器。

App-login-manager-icon.pngSign upTrust us for your data, and sign up

import { OnInit, Component } from "@angular/core";@Component({selector: 'app-registration',templateUrl: './registration.component.html',styleUrls: ['./registration.component.css']})export class RegistrationComponent implements OnInit {constructor() {}ngOnInit() {}}

使用模板驱动的表单实现用户名字段的验证

正如我们创建了我们的表格,现在是时候为它生成输入控件了。

我们上面的内容是用模板驱动的表单创建一个简单的HTML文档,我们将在其中介绍验证。我们userName 现在修改该 字段。

我们试图通过上面的代码实现的是创造一个参考变量 userName,以及分配 input的值给它。基本上,这是一种双向绑定,我们可以从组件中设置数据并将其更新为表单,反之亦然。现在,如果你运行你的应用程序,你应该会看到类似下面的错误。

Uncaught Error: Cannot assign to a reference or variable!at _AstToIrVisitor.visitPropertyWrite (compiler.js:26025)at PropertyWrite.visit (compiler.js:4585)at convertActionBinding (compiler.js:25475)at eval (compiler.js:27987)at Array.forEach ()at ViewBuilder._createElementHandleEventFn (compiler.js:27983)at nodes.(anonymous function) (webpack-internal:///./node_modules/@angular/compiler/esm5/compiler.js:27620:27)at eval (compiler.js:27928)at Array.map ()at ViewBuilder._createNodeExpressions (compiler.js:27927)

这是因为我们对模型和参考变量都使用了相同的名称。所以我们应该改变这一点。为此,我们创建一个用户模型(user.model.ts)并在我们的注册组件中引用它。

export class User {id: any;userName: string;email: string;userRole: string;profileImage: string;phoneNumber: string;firstName: string;lastName: string;}

import { User } from'../models/user.model'

现在我们可以改变我们的 input 如下所示。

请确保在注册组件中声明一个用户。

export class RegistrationComponent implements OnInit {user = new User();constructor() {}ngOnInit() {}}

现在,如果您运行应用程序,则只有在表单有效时才会启用提交按钮,即只有在用户名字段中输入任何值时才会启用提交按钮。

装饰验证消息

现在我们知道我们的表单工作正常,但是如果他们没有在这些字段中给出任何值,我们不需要向用户发送消息?让我们在我们的HTML中添加更多的标记。

User Name is required

我们正在动态启用这些类 has-error并 has-success 检查该userName 字段的有效和无效属性 。如果我们的userName 模型中有任何必需的错误,我们也会在新的时间范围内显示我们所需的现场信息 。现在,如果你运行你的应用程序,你可以看到验证工作正常。

517619a0c5a80c7475c8578dfad51889.png

但是,不是默认显示的验证?我们应该只显示消息,如果用户触及我们的领域,并拒绝输入任何内容,对吧?让我们加入userName.touched 我们的标记。

User Name is required

对其他字段进行验证

现在是时候在我们的应用的其他领域实施验证。

App-login-manager-icon.pngSign upTrust us for your data, and sign up

对于电子邮件验证,我们已经给出了一个额外的属性并将条件设置为[email]="user.email !== ""; 他使得它使得所需的验证和验证电子邮件不会被一起显示。如果用户触摸该字段并且没有给出任何值,这将显示所需的消息,并且只有当输入的值不是有效的电子邮件时,电子邮件验证才会被触发。听起来不错,对吧?

8a1704d348e108eb07335efa82ca42b1.png

添加注册功能

最后,让我们添加我们的 register 功能。

import { OnInit, Component } from "@angular/core";import { User } from '../models/user.model';@Component({selector: 'app-registration',templateUrl: './registration.component.html',styleUrls: ['./registration.component.css']})export class RegistrationComponent implements OnInit {user = new User();constructor() {}ngOnInit() {}register(user: User): void{console.log(user);}}

一旦完成,我们打开浏览器控制台并查看数据。

e2491e2894a3937c1c3fe3f4d8483e0c.png

在这里我们已经看到了我们如何使用模板驱动的表单来实现验证。我将在Angular中使用指令编写我的下一篇关于实现自定义验证器的文章,以便我们可以比较我们的密码并确认密码字段。

结论

非常感谢您的阅读。我错过任何你认为需要的东西吗?你觉得这篇文章有用吗?我希望你喜欢这篇文章。请与我分享您的宝贵建议和反馈。

举报/反馈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值