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 相关文章推荐
用box固定长宽实现图片自动轮播js代码
Jun 09 Javascript
js点击button按钮跳转到另一个新页面
Oct 10 Javascript
javascript实现window.print()去除页眉页脚
Dec 30 Javascript
JS采用绝对定位实现回到顶部效果完整实例
Jun 20 Javascript
jquery实现图片列表鼠标移入微动
Dec 01 Javascript
vue2.0实战之基础入门(1)
Mar 27 Javascript
详解React-Native全球化多语言切换工具库react-native-i18n
Nov 03 Javascript
实例教学如何写vue插件
Nov 30 Javascript
vue2.0 和 animate.css的结合使用
Dec 12 Javascript
@angular前端项目代码优化之构建Api Tree的方法
Dec 24 Javascript
详释JavaScript执行环境与执行栈
Apr 02 Javascript
基于JS正则表达式实现模板数据动态渲染(实现思路详解)
Mar 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
自己动手,丰衣足食 - 短波框形天线制作
2021/03/01 无线电
PHP依赖倒置(Dependency Injection)代码实例
2014/10/11 PHP
Yii2实现跨mysql数据库关联查询排序功能代码
2017/02/10 PHP
juqery 学习之三 选择器 简单 内容
2010/11/25 Javascript
jquery中获取select选中值的代码
2011/06/27 Javascript
javascript实现获取字符串hash值
2015/05/10 Javascript
JavaScript观察者模式(经典)
2015/12/09 Javascript
弹出遮罩层后禁止滚动效果【实现代码】
2016/04/29 Javascript
javascript获取网页各种高宽及位置的方法总结
2016/07/27 Javascript
React中的refs的使用教程
2018/02/13 Javascript
微信小程序实现弹出菜单功能
2018/06/12 Javascript
JavaScript求一个数组中重复出现次数最多的元素及其下标位置示例
2018/07/23 Javascript
IE9 elementUI文件上传的问题解决
2018/10/17 Javascript
jQuery实现的五星点评功能【案例】
2019/02/18 jQuery
ES6知识点整理之对象解构赋值应用示例
2019/04/17 Javascript
mpvue实现小程序签到金币掉落动画(api实现)
2019/10/17 Javascript
vue+导航锚点联动-滚动监听和点击平滑滚动跳转实例
2019/11/13 Javascript
微信小程序封装多张图片上传api代码实例
2019/12/30 Javascript
Vue实现小购物车功能
2020/12/21 Vue.js
Python中的闭包详细介绍和实例
2014/11/21 Python
Python自定义类的数组排序实现代码
2016/08/28 Python
Python基础知识_浅谈用户交互
2017/05/31 Python
windows下python安装paramiko模块和pycrypto模块(简单三步)
2017/07/06 Python
Python实现找出数组中第2大数字的方法示例
2018/03/26 Python
致Python初学者 Anaconda入门使用指南完整版
2018/04/05 Python
浅谈pandas中shift和diff函数关系
2018/04/08 Python
Python可变参数*args和**kwargs用法实例小结
2018/04/27 Python
Python编写通讯录通过数据库存储实现模糊查询功能
2019/07/18 Python
HTML5 placeholder属性详解
2016/06/22 HTML / CSS
几个MySql的面试题
2013/04/22 面试题
不打扫卫生检讨书
2014/02/12 职场文书
档案工作汇报材料
2014/08/21 职场文书
幼儿园端午节活动方案
2014/08/25 职场文书
房屋鉴定委托书范本
2014/09/23 职场文书
六个好看实用的 HTML + CSS 后台登录入口页面
2022/04/28 HTML / CSS
Vue ECharts实现机舱座位选择展示功能
2022/05/15 Vue.js