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 29 Javascript
Prototype 学习 工具函数学习($方法)
Jul 12 Javascript
JavaScript 精粹读书笔记(1,2)
Feb 07 Javascript
javascript之AJAX框架使用说明
Apr 24 Javascript
jQuery Mobile操作HTML5的常用函数总结
May 17 Javascript
JS日程管理插件FullCalendar中文说明文档
Feb 06 Javascript
JavaScript实现省市联动过程中bug的解决方法
Dec 04 Javascript
Angular5中提取公共组件之radio list的实例代码
Jul 10 Javascript
微信小程序template模板与component组件的区别和使用详解
May 22 Javascript
Vue v-for循环之@click点击事件获取元素示例
Nov 09 Javascript
使用Angular9和TypeScript开发RPG游戏的方法
Mar 25 Javascript
微信小程序实现购物车功能
Nov 18 Javascript
原生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
不用GD库生成当前时间的PNG格式图象的程序
2006/10/09 PHP
PHP函数常用用法小结
2010/02/08 PHP
PHP中exec与system用法区别分析
2014/09/22 PHP
PHP中异常处理的一些方法整理
2015/07/03 PHP
Yii2实现多域名跨域同步登录退出
2017/02/04 PHP
Yii2 hasOne(), hasMany() 实现三表关联的方法(两种)
2017/02/15 PHP
Yii2下点击验证码的切换实例代码
2017/03/14 PHP
分页栏的web标准实现
2011/11/01 Javascript
jQuery中after()方法用法实例
2014/12/25 Javascript
jQuery实现ichat在线客服插件
2014/12/29 Javascript
jQuery控制DIV层实现由大到小,由远及近动画变化效果
2015/10/09 Javascript
详解Bootstrap的aria-label和aria-labelledby应用
2016/01/04 Javascript
JavaScript如何实现组合列表框中元素移动效果
2016/03/01 Javascript
轻松5句话解决JavaScript的作用域
2016/07/15 Javascript
js实现炫酷的左右轮播图
2017/01/18 Javascript
Bootstrap Tree View简单而优雅的树结构组件实例解析
2017/06/15 Javascript
在Vue中如何使用Cookie操作实例
2017/07/27 Javascript
AngularJS 表单验证手机号的实例(非必填)
2017/11/12 Javascript
基于百度地图api清除指定覆盖物(Overlay)的方法
2018/01/26 Javascript
JavaScript惰性载入函数实例分析
2019/03/27 Javascript
微信小程序全局变量改变监听的实现方法
2019/07/15 Javascript
帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
2019/08/23 Javascript
JS实现的碰撞检测与周期移动完整示例
2019/09/02 Javascript
[05:49]2014DOTA2TI4正赛第二日综述 昔日冠军纷纷落马 VG LGD占尽先机
2014/07/20 DOTA
介绍Python中的文档测试模块
2015/04/28 Python
python中如何使用正则表达式的集合字符示例
2017/10/09 Python
python使用正则表达式的search()函数实现指定位置搜索功能
2017/11/10 Python
Python实现图片转字符画的代码实例
2019/02/22 Python
Python GUI编程完整示例
2019/04/04 Python
Python中logger日志模块详解
2020/08/04 Python
python 基于Apscheduler实现定时任务
2020/12/15 Python
美国巧克力喷泉品牌:Sephra
2019/05/05 全球购物
SQL Server 2000数据库的文件有哪些,分别进行描述。
2015/11/09 面试题
社区健康教育实施方案
2014/03/18 职场文书
新疆民族团结演讲稿
2014/08/27 职场文书
win sever 2022如何占用操作主机角色
2022/06/25 Servers