Angular value与ngValue区别详解


Posted in Javascript onNovember 27, 2019

前言

在最近的项目中,需要用到 select 组件,之前 Angular 前台都是用现有的封装好的框架,一般都是从 Ctrl+cCtrl+v 的操作然后改一下就可以用,最近使用的 Bootstrap 原生样式,所以一切都得自己写,但是这样也有好处的,不会受框架的局限性。

Angular value与ngValue区别详解

组件

ts部分代码:

input 输入, output 输出

@Input()
 set college(value: College) {
  this.innerCollege = value;
 }

 get college(): College {
  return this.innerCollege;
 }

 private innerCollege: College;

 @Output()
 collegeSelect: EventEmitter<College> = new EventEmitter();
 
 .........
 
  public change(college: College): void {
  this.collegeSelect.emit(college);
 }

Html:

<select [compareWith]="comparedWithId" class="form-control" [(ngModel)]="college" (change)="change(college)">
 <option value="-1" >请选择学院...</option>
 <option *ngFor="let _college of colleges" [value]="_college">{{_college.name}}</option>
</select>

问题

在发送请求时,向后台发送 Post 请求时发生错误,并提示状态码为 400

Angular value与ngValue区别详解

出现 400

的状态码的错误一般有两种:

1、语义有误,当前请求无法被 服务器 理解。除非进行修改,否则客户端不应该重复提交这个请求。

2、请求参数有误。

在看一下向后台发送数据为 [Object Object]

Angular value与ngValue区别详解

很明显我们这就是第二种请求参数错误,应该是传过去一个 College 对象,而我们传过去了一个 [Object Object]

原因

为什么会出现这个原因呢,在大家看来 [Object Object] 是不是也是一个对象?

在控制台打印,发现传过去的 College 就是 [Object Object]

Angular value与ngValue区别详解

为什么会这样显示呢,感觉怪怪的,不是应该显示 JSON 格式的对象么?

google 一下问题迎刃而解,在 stackoverflow 有详细的解释

Angular value与ngValue区别详解

[value]="..." 仅支持字符串值
[ngValue]="..." 支持任何类型

所以 value 仅支持串字符串,不支持传对象,如果使用 value 传对象,然而不会得到正确的解析,就得到了我们看到的 [Object Object]

修改为ngValue

<select [compareWith]="comparedWithId" class="form-control" [(ngModel)]="college" (change)="change(college)">
 <option value="-1" >请选择学院...</option>
 <option *ngFor="let _college of colleges" [ngValue]="_college">{{_college.name}}</option>
</select>

控制台打印:

Angular value与ngValue区别详解

现在看来是我们想要的数据!!!

在次发送请求,状态码 200 成功

Angular value与ngValue区别详解

Angular value与ngValue区别详解

数据也是正确的!!没有问题!!

总结

感觉之前还是太依赖于框架,没有深究 ValuengValue 有什么不同,框架里用 Value 就直接复制过去,框架都是封装好的,导致现在自己用到了,不知道怎么写的了。

用框架也有好处,既方便又省时间,什么都是现成的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
判断javascript的数据类型(示例代码)
Dec 11 Javascript
javascript中setTimeout的问题解决方法
May 08 Javascript
javascript数组操作方法小结和3个属性详细介绍
Jul 05 Javascript
根据当前时间在jsp页面上显示上午或下午
Aug 18 Javascript
在Google 地图上实现做的标记相连接
Jan 05 Javascript
javascript文本框内输入文字倒计数的方法
Feb 24 Javascript
js实现背景图片感应鼠标变化的方法
Feb 28 Javascript
javascript设计模式--策略模式之输入验证
Nov 27 Javascript
详解在Angular项目中添加插件ng-bootstrap
Jul 04 Javascript
AngularJS修改model值时,显示内容不变的实例
Sep 13 Javascript
原生JS实现无缝轮播图片
Jun 24 Javascript
vue-treeselect的基本用法以及解决点击无法出现拉下菜单
Apr 30 Vue.js
原生js实现二级联动菜单
Nov 27 #Javascript
微信小程序wxml列表渲染原理解析
Nov 27 #Javascript
原生js实现下拉选项卡
Nov 27 #Javascript
浅析Vue下的components模板使用及应用
Nov 27 #Javascript
d3.js 地铁轨道交通项目实战
Nov 27 #Javascript
微信小程序表单验证WxValidate的使用
Nov 27 #Javascript
vue(2.x,3.0)配置跨域代理
Nov 27 #Javascript
You might like
解析php中用PHPMailer来发送邮件的示例(126.com的例子)
2013/06/24 PHP
WordPress中使主题支持小工具以及添加插件启用函数
2015/12/22 PHP
微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法
2016/01/12 PHP
Yii框架表单模型和验证用法
2016/05/20 PHP
Javascript 面向对象(三)接口代码
2012/05/23 Javascript
js 获取屏幕各种宽高的方法(浏览器兼容)
2013/05/15 Javascript
jquery对象和DOM对象的区别介绍
2013/08/09 Javascript
Extjs改变树节点的勾选状态点击按钮将复选框去掉
2013/11/14 Javascript
如何在JavaScript中实现私有属性的写类方式(一)
2013/12/04 Javascript
javascript原生ajax写法分享
2016/04/10 Javascript
jQuery on()方法绑定动态元素的点击事件无响应的解决办法
2016/07/07 Javascript
基于HTML+CSS+JS实现增加删除修改tab导航特效代码
2016/08/05 Javascript
利用JS实现scroll自定义滚动效果详解
2017/10/17 Javascript
vue实现点击追加选中样式效果
2019/11/01 Javascript
django1.8使用表单上传文件的实现方法
2016/11/04 Python
Python常见加密模块用法分析【MD5,sha,crypt模块】
2017/05/24 Python
python如何定义带参数的装饰器
2018/03/20 Python
pandas使用apply多列生成一列数据的实例
2018/11/28 Python
Python for循环与range函数的使用详解
2019/03/23 Python
Python多版本开发环境管理工具介绍
2019/07/03 Python
Python-Seaborn热图绘制的实现方法
2019/07/15 Python
Python进程,多进程,获取进程id,给子进程传递参数操作示例
2019/10/11 Python
解决jupyter运行pyqt代码内核重启的问题
2020/04/16 Python
Python3爬虫中Ajax的用法
2020/07/10 Python
佳能法国商店:Canon法国
2019/02/14 全球购物
捷克家电和家具购物网站:OKAY.cz
2020/07/23 全球购物
学生的自我鉴定范文
2013/10/24 职场文书
心碎乌托邦的创业计划书范文
2013/12/26 职场文书
商务会议邀请函
2014/01/09 职场文书
国际贸易专业个人职业生涯规划
2014/02/15 职场文书
认识深刻的检讨书
2014/02/16 职场文书
“四风”查摆问题自我剖析材料
2014/09/27 职场文书
2015年乡镇安全生产工作总结
2015/05/19 职场文书
爱国主义主题班会
2015/08/14 职场文书
话题作文之诚信
2019/11/28 职场文书
Django+Celery实现定时任务的示例
2021/06/23 Python