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 相关文章推荐
js兼容标准的表格变色效果
Jun 28 Javascript
5秒后跳转效果(setInterval/SetTimeOut)
May 03 Javascript
JS小游戏之象棋暗棋源码详解
Sep 25 Javascript
jQuery+css实现百度百科的页面导航效果
Dec 16 Javascript
javascript实现五星评分功能
Nov 10 Javascript
浅析node连接数据库(express+mysql)
Nov 30 Javascript
jQuery+Ajax实现无刷新操作
Jan 04 Javascript
精彩的Bootstrap案例分享 重点在注释!(选项卡、栅格布局)
Jul 01 Javascript
AngularJS基础 ng-include 指令示例讲解
Aug 01 Javascript
jQuery获取this当前对象子元素对象的方法
Nov 29 Javascript
通过jquery的ajax请求本地的json文件方法
Aug 08 jQuery
vue实现整屏滚动切换
Jun 29 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
一拳超人中怪人协会钦定! S级别最强四人!
2020/03/02 日漫
?生?D片??C字串
2006/12/06 PHP
php高级编程-函数-郑阿奇
2011/07/04 PHP
解析关于java,php以及html的所有文件编码与乱码的处理方法汇总
2013/06/24 PHP
解决laravel-admin 自己新建页面里 js 需要刷新一次的问题
2019/10/03 PHP
javascript数组的扩展实现代码集合
2008/06/01 Javascript
扩展jquery实现客户端表格的分页、排序功能代码
2011/03/16 Javascript
js获取URL的参数的方法(getQueryString)示例
2013/09/29 Javascript
jQuery通过扩展实现抖动效果的方法
2015/03/11 Javascript
jQuery使用empty()方法删除元素及其所有子元素的方法
2015/03/26 Javascript
JS基于MSClass和setInterval实现ajax定时采集信息并滚动显示的方法
2016/04/18 Javascript
jQuery mobile的header和footer在点击屏幕的时候消失的解决办法
2016/07/01 Javascript
js 判断一组日期是否是连续的简单实例
2016/07/11 Javascript
nodejs实例解析(输出hello world)
2017/01/03 NodeJs
对vux点击事件的优化详解
2018/08/28 Javascript
Angular ElementRef简介及其使用
2018/10/01 Javascript
详解从react转职到vue开发的项目准备
2019/01/14 Javascript
Element-ui自定义table表头、修改列标题样式、添加tooltip、:render-header使用
2019/04/11 Javascript
详解vue 动态加载并注册组件且通过 render动态创建该组件
2019/05/30 Javascript
python获取文件扩展名的方法
2015/07/06 Python
用python做一个搜索引擎(Pylucene)的实例代码
2017/07/05 Python
50行Python代码实现人脸检测功能
2018/01/23 Python
对python的bytes类型数据split分割切片方法
2018/12/04 Python
Python定时任务随机时间执行的实现方法
2019/08/14 Python
python使用 request 发送表单数据操作示例
2019/09/25 Python
Django框架中间件定义与使用方法案例分析
2019/11/28 Python
python 消费 kafka 数据教程
2019/12/21 Python
CSS3 中filter(滤镜)属性使用详解
2020/04/07 HTML / CSS
CSS3制作皮卡丘动画壁纸的示例
2020/11/02 HTML / CSS
丝绸和人造花卉、植物和树木:Nearly Natural
2018/11/28 全球购物
工作推荐信范文
2014/05/10 职场文书
酒店七夕情人节活动策划方案
2014/08/24 职场文书
缓刑人员思想汇报500字
2014/09/12 职场文书
师范生见习报告范文
2014/11/03 职场文书
Python jiaba库的使用详解
2021/11/23 Python
Java 获取Word中所有的插入和删除修订的方法
2022/04/06 Java/Android