怎样使用Angular模版驱动表单

这次给大家带来怎样使用Angular模版驱动表单,使用Angular模版驱动表单的注意事项有哪些,下面就是实战案例,一起来看一下。

获取用户输入

Angular表单

登录后复制

假如有以上简单表单,先不论优劣,有哪些方式可以获取到表单数据呢? 先看两种简单粗暴的

1)事件$event的方式

在监听事件的时候,将整个事件载荷 $event 传递到事件处理函数,它会携带触发元素的各种信息。这里监听form元素的submit事件,将整个form的信息传给处理函数,并打印出来


登录后复制

testInput ( _input: any) {  console.dir(_input);}

登录后复制

触发submit后,查看结果。非常眼熟,就是传统方式中的event嘛,后面就不用多说了,target即为form元素,再定位到input子元素,分别获取value即可。

怎样使用Angular模版驱动表单

为了获取input的Value,我们传递了非常多的无用信息,处理函数根本就不关心元素的位置,属性等等,它只需要value值。所以这种方式不可取

2) 模版引用变量

Angular中可以用 模版引用变量(#var)来引用DOM元素/Angular组件/指令。通常模版引用变量就是代表声明的那个元素,当然也可以修改指向,可以代表Angular指令(比如后续用到的ngForm指令和ngModel指令)。

// 模版引用变量代表Form元素// 模版引用变量代表ngForm指令

登录后复制

从下图可以看到不同,第一个和$event.target一样,是DOM元素;第二个是ngForm指令,可以跟踪每个控件的值和状态(是否输入过?是否校验通过?等等),后续会详细说

怎样使用Angular模版驱动表单

所以当我们直接用模版引用变量引用input元素时,就可以直接在模版中传递input元素的value,而不需要传递整个元素信息。这种方式也不好,必须要通过事件触发才可以传递

   

登录后复制

注意:模版引用变量的作用域是整个模版,所以在同一个模版中,不能有同名的模版引用变量

这两种获取表单数据的方式只是了解下,因为Angular提供了两种更好的构建表单的方式—模版驱动表单和模型驱动表单

模版驱动表单

顾名思义,是使用 HTML模版 + 表单专业指令 来构建表单。使用模版驱动表单,记得要先在应用模块中import FormsModule。说明以下几点:

1、模版驱动表单使用 [(ngModel)] 语法进行双向数据绑定,非常简单就可以把表单数据绑定到模型中。注意在表单中使用[ngModel]时,必须要定义name属性,因为Angular在处理表单时,会创建一些FormControl,用来跟踪单个表单控件的值和状态,而表单控件name属性就是键值,所以必须要指定name属性。(这应该算是指出了获取表单数据的两种科学的方式:[ngModel]语法绑定 和 通过formControl的Api获取)

2、使用 ngForm指令,来监听整个表单的有效性(valid属性)。Angular会自动为form表单自动创建并添加ngForm指令,直接使用即可

3、使用ngModel指令,来监听单个表单控件的状态,还会使用特定的Angular css来更新控件样式 ,我们可以通过这些class来控制不同状态时,表单控件的展示 

怎样使用Angular模版驱动表单

4、表单验证可以使用 HTML原生的表单验证属性(required , pattern , max , min 等等) ,验证出错时,3中提到的errors属性就会有对应的错误项;

还可以自定义验证器,因为模版驱动表单不直接访问FormControl实例,所以需要把自定义的验证器用指令包装。

通过以下栗子来展示模版驱动表单简单使用

   

用户名不能为空! 用户名只能包含英文或数字!

密码不能为空!

登录后复制

通过Angular css 自动添加的class来控制表单样式

input.ng-invalid.ng-touched{    border: 2px solid red; }

登录后复制

查看下效果,表单校验、样式反馈、按钮状态管理、数据获取都很方便。

怎样使用Angular模版驱动表单

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

如何使用vue注册组件

怎样使用Vue三层嵌套路由

以上就是怎样使用Angular模版驱动表单的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2758772.html

(0)
上一篇 2025年3月8日 08:17:22
下一篇 2025年3月8日 01:53:59

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • angular httpclient实现 HTTP 客户端功能

    这次给大家带来angular httpclient实现 HTTP 客户端功能,angular httpclient实现HTTP客户端功能的注意事项有哪些,下面就是实战案例,一起来看一下。 现代浏览器支持使用两种不同的 API 发起 HTTP…

    2025年3月8日 编程技术
    200
  • Angular项目中使用scss步骤详解

    这次给大家带来Angular项目中使用scss步骤详解,Angular项目中使用scss的注意事项有哪些,下面就是实战案例,一起来看一下。 前言 SCSS 是 Sass 3 引入新的语法,其语法完全兼容 CSS3,并且继承了 Sass 的强…

    编程技术 2025年3月8日
    200
  • Angular入口组件与声明式组件案例对比

    这次给大家带来Angular入口组件与声明式组件案例对比,Angular入口组件与声明式组件案例使用的注意事项有哪些,下面就是实战案例,一起来看一下。 前言 组件是Angular中很重要的一部分,下面这篇文章就来给大家介绍关于Angular…

    编程技术 2025年3月8日
    200
  • 怎么使用Angular中单向数据流

    这次给大家带来怎么使用Angular中单向数据流,使用Angular中单向数据流的注意事项有哪些,下面就是实战案例,一起来看一下。 变更检测 Angular 中,数据是由顶部根节点流向最后的叶子节点,整个数据流是单向,构成一颗单向树。 An…

    2025年3月8日
    200
  • 怎样使用Angular对服务端进行渲染

    这次给大家带来怎样使用Angular对服务端进行渲染,使用Angular对服务端进行渲染的注意事项有哪些,下面就是实战案例,一起来看一下。 Angular Universal Angular在服务端渲染方面提供一套前后端同构解决方案,它就是…

    2025年3月8日 编程技术
    200
  • Angular 5.x 学习笔记之Router(路由)应用

    本篇文章主要介绍了angular 5.x 学习笔记之router(路由)应用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 序言: Angular APP 视图之间的跳转,依赖于 Router (路由),这一章…

    2025年3月8日
    200
  • 如何使用Angular内Router(路由)应用

    这次给大家带来如何使用Angular内Router(路由)应用,使用Angular内Router(路由)应用的注意事项有哪些,下面就是实战案例,一起来看一下。 序言: Angular APP 视图之间的跳转,依赖于 Router (路由),…

    2025年3月8日
    200
  • Angular HMR(热模块替换)功能实现方法

    本篇文章主要介绍了angular hmr(热模块替换)功能实现方法,现在分享给大家,也给大家做个参考。 最近一个同事在使用Angular的时候,希望能像VUE那样,修改代码后浏览器不刷新,页面对应修改的组件自动更新的功能。这个功能的名字时H…

    编程技术 2025年3月8日
    200
  • 怎样进行Angular HMR)功能实现

    这次给大家带来怎样进行Angular HMR)功能实现,进行Angular HMR)功能实现的注意事项有哪些,下面就是实战案例,一起来看一下。 最近一个同事在使用Angular的时候,希望能像VUE那样,修改代码后浏览器不刷新,页面对应修改…

    编程技术 2025年3月8日
    200
  • 剖析Angular Component的源码示例

    本篇文章主要介绍了剖析angular component的源码示例,现在分享给大家,也给大家做个参考。 Web Component 在介绍Angular Component之前,我们先简单了解下W3C Web Components 定义 W…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论