美文网首页Web前端之路
Angular checkbox 遭遇双向绑定问题

Angular checkbox 遭遇双向绑定问题

作者: 肯弩立尔斯基 | 来源:发表于2019-05-07 13:14 被阅读0次

初学Angular 时遇到过关于checkbox 双向绑定的问题,看代码:

爱好:
    <span *ngFor="let item of userInfo.hobby; let key = index;">
      <input type="checkbox" [id]="'check'+key" [(ngModel)]="item.checked" /><label [for]="'check'+key">{{item.title}}</label>
    </span>
userInfo = {
    hobby: [
      {title: '跑步', checked: false}, 
      {title: '登山', checked: true}, 
      {title: '游泳', checked: true}, 
      {title: '手游', checked: false}
    ]
  };

运行后,控制台报错:

ERROR Error: "If ngModel is used within a form tag, either the name attribute must be set or the form
      control must be defined as 'standalone' in ngModelOptions.

      Example 1: <input [(ngModel)]="person.firstName" name="first">
      Example 2: <input [(ngModel)]="person.firstName" [ngModelOptions]="{standalone: true}">"
    Angular 9
    View_RegisterFormComponent_2 RegisterFormComponent.html:17
    Angular 31
RegisterFormComponent.html:17:6

嗯嗯,意思是如果使用ngModel,那么必须要给form 标签添加name,或者使用[ngModelOptions]="{standalone: true}"。

添加name后,错误消失,但又出现新的问题。我的初始值之中‘登山’和‘游泳’是要被选中的,然鹅,运行后并没有选中,反复折腾后,终于发现问题所在。因为我所有的checkbox 使用的name 相同,而checkbox 的checked attr(关于attr 和prop 的区别请自行查找)的值以最后一个checkbox 的值为准(原理没搞懂)。也就是说,最后一个为true,则所有的都选中,最后一个为false,则都不选中。。。

无奈之下,我将name 删除,用了第二种解决方案,即使用[ngModelOptions]="{standalone: true}",这一次成功初始化,该选的都选了。

虽然功能没问题了,但我还是有点小纠结,就不能给checkbox 设置name 吗?可能谷歌觉得使用了双向绑定,你没必要在使用form 表单提交来获取数据吧!

相关文章

  • Angular checkbox 遭遇双向绑定问题

    初学Angular 时遇到过关于checkbox 双向绑定的问题,看代码: 运行后,控制台报错: 嗯嗯,意思是如果...

  • Angular学习第一天

    Angular学习第一天 第一天学习目标 如何创建angular新工程 什么是单向绑定 什么是双向绑定 双向绑定需...

  • Angular5踩坑总结

    表单双向绑定1:做双向绑定时,如果遇见Angular: Can't bind to 'ngModel' since...

  • (33)Vue购物车

    用v-model来双向绑定input控制checkbox是否选中 Vue中双向数据绑定是如何实现的 positio...

  • angular双向绑定

    MVVM的核心机制就是双向绑定。React、Vue、Angular的双向绑定,都是基于MVVM的设计模式。 双向绑...

  • Angular 2入门(二)

    (纯属个人笔记,摘要记录) 双向绑定 [(ngModel)]是Angular的双向数据绑定的语法。 用法如下: 因...

  • Angular双向数据绑定问题

    使用【(ngModel)】时候报错: 1.core.js:1448 ERROR Error: Uncaught (...

  • 双向绑定和单向绑定

    Vue 的双向绑定(也是 Angular 的双向绑定)有这些功能: 只要 JS 改变了 view.number 或...

  • Angular 4 学习笔记

    1.AngularJS 的问题(MVC架构) a.性能 (双向数据绑定带来的问题) / Angular 默认不再是...

  • Angular学习笔记-双向绑定

    Angular和Vue一样都是MVVM的框架,MVVM的核心机制就是双向绑定。 双向绑定将属性绑定与事件绑定结合在...

网友评论

    本文标题:Angular checkbox 遭遇双向绑定问题

    本文链接:https://www.haomeiwen.com/subject/khjeoqtx.html