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 相关文章推荐
运用Windows XP附带的Msicuu.exe、Msizap.exe来彻底卸载顽固程序
Apr 21 Javascript
jQuery 隔行换色 支持键盘上下键,按Enter选定值
Aug 02 Javascript
JavaScript中清空数组的三种方法分享
Apr 07 Javascript
通过jQuery源码学习javascript(二)
Dec 27 Javascript
jQuery获取标签文本内容和html内容的方法
Mar 27 Javascript
jQuery实现Select左右复制移动内容
Aug 05 Javascript
探讨AngularJs中ui.route的简单应用
Nov 16 Javascript
使用jQuery ajaxupload插件实现无刷新上传文件
Apr 23 jQuery
微信小程序实现简单跑马灯效果
May 26 Javascript
Angular8 Http拦截器简单使用教程
Aug 20 Javascript
解决小程序无法触发SESSION问题
Feb 03 Javascript
基于javascript的无缝滚动动画1
Aug 07 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
PHP学习之整理字符串
2011/04/17 PHP
php自动加载autoload机制示例分享
2014/02/20 PHP
destoon实现会员商铺中指定会员或会员组投放广告的方法
2014/08/21 PHP
PHP 根据key 给二维数组分组
2016/12/09 PHP
yii2-GridView在开发中常用的功能及技巧总结
2017/01/07 PHP
PHP使用GD库制作验证码的方法(点击验证码或看不清会刷新验证码)
2017/08/15 PHP
Javascript根据指定下标或对象删除数组元素
2012/12/21 Javascript
基于iframe实现类似于ajax的页面无刷新
2014/05/31 Javascript
JavaScript数据结构与算法之栈详解
2015/03/12 Javascript
JQuery中节点遍历方法实例
2015/05/18 Javascript
移动端使用localStorage缓存Js和css文的方法(web开发)
2016/09/20 Javascript
vue2 前端搜索实现示例
2018/02/26 Javascript
vue 实现的树形菜的实例代码
2018/03/19 Javascript
使用Vue开发动态刷新Echarts组件的教程详解
2018/03/22 Javascript
vue-better-scroll 的使用实例代码详解
2018/12/03 Javascript
Vue拖拽组件列表实现动态页面配置功能
2019/06/17 Javascript
js实现div色块碰撞
2020/01/16 Javascript
前端 javascript 实现文件下载的示例
2020/11/24 Javascript
pygame学习笔记(6):完成一个简单的游戏
2015/04/15 Python
详解Python中time()方法的使用的教程
2015/05/22 Python
Python爬虫常用小技巧之设置代理IP
2018/09/13 Python
Django获取应用下的所有models的例子
2019/08/30 Python
django实现支付宝支付实例讲解
2019/10/17 Python
通过 Django Pagination 实现简单分页功能
2019/11/11 Python
python 统计文件中的字符串数目示例
2019/12/24 Python
matplotlib 三维图表绘制方法简介
2020/09/20 Python
CSS的background属性及CSS3的背景图片设置总结
2016/06/13 HTML / CSS
机电专业个人自荐信格式模板
2013/09/23 职场文书
2014年大学生自我评价
2014/01/19 职场文书
2014年国庆节广播稿
2014/09/19 职场文书
三严三实对照检查材料
2014/09/22 职场文书
流动人口婚育证明范本
2014/09/26 职场文书
简易离婚协议书(范本)
2014/10/25 职场文书
三峡大坝导游词
2015/01/31 职场文书
初中教师个人工作总结
2015/02/10 职场文书
改造DE1103三步曲
2022/04/07 无线电