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数组的扩展实现代码集合
Jun 01 Javascript
document.createElement()用法
Mar 13 Javascript
JS获取url链接字符串 location.href
Dec 23 Javascript
JavaScript 面向对象与原型
Apr 10 Javascript
JS实现带有抽屉效果的产品类网站多级导航菜单代码
Sep 15 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
Oct 12 Javascript
js实现input密码框提示信息的方法(附html5实现方法)
Jan 14 Javascript
AngularJS下对数组的对比分析
Aug 24 Javascript
react 父组件与子组件之间的值传递的方法
Sep 14 Javascript
微信小程序实现全局搜索代码高亮的示例
Mar 30 Javascript
浅析webpack-bundle-analyzer在vue-cli3中的使用
Oct 23 Javascript
JavaScript算法学习之冒泡排序和选择排序
Nov 02 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
thinkPHP中验证码的简单使用方法
2015/12/26 PHP
详解Yii2.0 rules验证规则集合
2017/03/21 PHP
如何利用预加载优化Laravel Model查询详解
2017/08/11 PHP
PHP使用Redis实现Session共享的实现示例
2019/05/12 PHP
jQuery随便控制任意div隐藏的方法
2013/06/28 Javascript
JS的get和set使用示例
2014/02/20 Javascript
JS函数this的用法实例分析
2015/02/05 Javascript
javascript格式化日期时间方法汇总
2015/06/19 Javascript
谈谈js中的prototype及prototype属性解释和常用方法
2015/11/25 Javascript
JS控制TreeView的结点选择
2016/11/11 Javascript
jQuery插件FusionCharts绘制的3D环饼图效果示例【附demo源码】
2017/04/02 jQuery
vue-cli配置文件——config篇
2018/01/04 Javascript
使用electron将vue-cli项目打包成exe的方法
2018/09/29 Javascript
element-ui 的el-button组件中添加自定义颜色和图标的实现方法
2018/10/26 Javascript
如何使用JavaScript检测空闲的浏览器选项卡
2020/05/28 Javascript
prettier自动格式化去换行的实现代码
2020/08/25 Javascript
python使用range函数计算一组数和的方法
2015/05/07 Python
浅谈python中截取字符函数strip,lstrip,rstrip
2015/07/17 Python
Python实现PS滤镜Fish lens图像扭曲效果示例
2018/01/29 Python
Python实现获取nginx服务器ip及流量统计信息功能示例
2018/05/18 Python
python模糊图片过滤的方法
2018/12/14 Python
详解python3 + Scrapy爬虫学习之创建项目
2019/04/12 Python
Pytorch 实现权重初始化
2019/12/31 Python
Python调用接口合并Excel表代码实例
2020/03/31 Python
Python常用断言函数实例汇总
2020/11/30 Python
详解CSS的border边框属性及其在CSS3中的新特性
2016/05/10 HTML / CSS
玩转CSS3色彩
2010/01/16 HTML / CSS
关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法
2016/01/27 HTML / CSS
HTML5中的拖放实现详解
2017/08/23 HTML / CSS
门诊手术室工作制度
2014/01/30 职场文书
宝宝满月酒主持词和仪式流程
2014/03/27 职场文书
员工试用期考核自我鉴定
2014/04/13 职场文书
计划生育目标责任书
2015/05/09 职场文书
同事欢送会致辞
2015/07/31 职场文书
HTML5基础学习之文本标签控制
2022/03/25 HTML / CSS
MySQL脏读,幻读和不可重复读
2022/05/11 MySQL