Angular 2 ngForm中的ngModel、[ngModel]和[(ngModel)]的写法
发布时间 - 2026-01-11 02:06:55 点击率:次“对呀对呀!……回字有四样写法,你知道么?”,当时鲁大大如此讽刺孔乙己,意味着老孔这个被科举制毒害的人注意此种无用之物实在可悲。但是在Angular 2的世界中,很少存在无用之物,ngModel有三种写法,你知道吗?

表单的设计永远都是应用的重头戏,而其中最基本的功能点即是通过一个个输入组件实现的,为此Angular 2为我们提供了锋利的武器:ngModel。而其不同的使用方式有着大不相同的作用:
ngModel
如果单独使用ngModel,且没有为其赋值的话,它会在其所在的ngForm.value对象上添加一个property,此property的key值为ngModel所在组件设置的name属性的值:
<form novalidate #f="ngForm">
<input type='text' name='userName' placeholder='Input your userName' ngModel>
</form>
<p>
{{ f.value | json }} // { "userName": "" }
</p>
此时需要注意的是,单独使用ngModel时,如果没有为ngModel赋值的话,则必须存在name属性。
也就是说,单独ngModel的作用是通知ngForm.value,我要向你那里加入一个property,其key值是组件的name属性值,其value为空字符串。
[ngModel]
可是,如果想向ngForm中添加一个有默认值的property需要怎么做呢?这时就需要使用单向数据绑定的格式了,也就是[ngModel]:
this.model = {
userName: 'Casear'
};
<form novalidate #f="ngForm">
<input type='text' name='userName' placeholder='Input your userName' [ngModel]='model.userName'>
</form>
<p>
{{ f.value | json }} // { "userName": "Casear" }
{{ model | json }} // { "userName": "Casear" },不会随着f.value的变化而变化
</p>
这里我们使用了单向数据绑定的特点,可以为ngForm.value添加一个带有初始值的property。
注意单向数据绑定的特点,此时在表单输入框中做的任何改变都不会影响model中的数据,也就是说this.model.userName不会随着输入框的改变而改变。不过输入框改变会体现在f.value中。
[(ngModel)]
上述的单向数据绑定在单纯地提供初始值很有用,不过总是有些场景需要将用户输入体现在我们的model上,此时就需要双向数据绑定了,也即[(ngModel)]:
this.model = {
userName: 'Casear'
};
<form novalidate #f="ngForm">
<input type='text' name='userName' placeholder='Input your userName' [(ngModel)]='model.userName'>
</form>
<p>
{{ f.value | json }} // { "userName": "Casear" }
{{ model | json }} // { "userName": "Casear" },会随着f.value的变化而变化
</p>
这里我们不仅为ngForm.value添加了一个带有初始值的property,还能实现Model和View层的联动,尽管这种方式可能并不好,但是在某些情况下也不失为一种简便的方案。
关于[(ngModel)]的内部逻辑可查看Angular 2 父子组件数据通信。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# angularjs中ng
# model
# angularjs
# ng
# AngularJS解决ng-if中的ng-model值无效的问题
# AngularJS动态绑定ng-options的ng-model实例代码
# AngularJS实践之使用NgModelController进行数据绑定
# AngularJs Understanding the Model Component
# AngularJS基础 ng-model-options 指令简单示例
# AngularJs 弹出模态框(model)
# 深入浅析AngularJS和DataModel
# AngularJS实现Model缓存的方式
# angularjs自定义ng-model标签的属性
# angularjs在ng-repeat中使用ng-model遇到的问题
# 绑定
# 输入框
# 你知道
# 表单
# 之物
# 对呀
# 的人
# 的是
# 也就是说
# 我要
# 还能
# 会在
# 数据通信
# 如果没有
# 仅为
# 为其
# 怎么做
# 时就
# 向你
# 即是
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在建站主机中优化服务器配置?
如何快速查询域名建站关键信息?
Android GridView 滑动条设置一直显示状态(推荐)
如何在Windows服务器上快速搭建网站?
通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】
bing浏览器学术搜索入口_bing学术文献检索地址
Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程
Laravel如何使用withoutEvents方法临时禁用模型事件
javascript中闭包概念与用法深入理解
香港服务器WordPress建站指南:SEO优化与高效部署策略
如何将凡科建站内容保存为本地文件?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
Android自定义listview布局实现上拉加载下拉刷新功能
JavaScript如何实现类型判断_typeof和instanceof有什么区别
详解vue.js组件化开发实践
Android实现代码画虚线边框背景效果
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
如何正确选择百度移动适配建站域名?
Laravel如何构建RESTful API_Laravel标准化API接口开发指南
公司网站制作需要多少钱,找人做公司网站需要多少钱?
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
IOS倒计时设置UIButton标题title的抖动问题
猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】
HTML 中动态设置元素 name 属性的正确语法详解
Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧
php静态变量怎么调试_php静态变量作用域调试技巧【解答】
Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
深入理解Android中的xmlns:tools属性
如何在Windows虚拟主机上快速搭建网站?
Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案
如何在IIS中新建站点并配置端口与物理路径?
Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】
如何快速搭建高效服务器建站系统?
如何在阿里云完成域名注册与建站?
Laravel如何实现数据库事务?(DB Facade示例)
如何在阿里云虚拟主机上快速搭建个人网站?
Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】
WordPress 子目录安装中正确处理脚本路径的完整指南
活动邀请函制作网站有哪些,活动邀请函文案?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
Laravel如何使用Livewire构建动态组件?(入门代码)
Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例
Laravel怎么实现验证码(Captcha)功能
canvas 画布在主流浏览器中的尺寸限制详细介绍
如何在建站宝盒中设置产品搜索功能?
如何快速辨别茅台真假?关键步骤解析
上一篇:Linux软连接权限问题解决
下一篇:网上购物系统的便捷性与安全性探讨
上一篇:Linux软连接权限问题解决
下一篇:网上购物系统的便捷性与安全性探讨

