【问题标题】:How to use 2d array on ngmodel in angular 2?如何在角度 2 的 ngmodel 上使用 2d 数组?
【发布时间】:2017-01-11 08:07:56
【问题描述】:
想知道如何在 ngmodel 中为动态复选框设置二维数组?
我有一个带有多个复选框的超级管理员的角色和权限设置表单。
如何区分模型名称与角色 ID 和权限 ID。我需要通过数组中的模型名称传递角色 ID 和权限 ID。
例如:[(ngModel)]="permission[role.id][per.id]"
有没有办法在 Form 中为 ngmodel 分配 2d 值?
期待尽快回复。
提前致谢。
【问题讨论】:
标签:
html
angular
multidimensional-array
angular2-ngmodel
【解决方案1】:
由于ngModel是获取2路绑定系统的指令。
您可以轻松地执行语法:
[(ngModel)]="permission[role.id][per.id]"
其中权限是一个空数组,最初定义为:
permission = []
或
permission = [[]]
您的 permission 变量将是一个多维数组。
在这之后,如果你尝试 ngModel
[(ngModel)]="permission[role.id][per.id]"
这将导致 undefined 问题,因为 ngModel 不仅从输入中获取值,它还必须显示 2-way binding 是如何工作的。
为了避免由于未定义而导致渲染时出现问题,我们必须首先将虚拟数据分配给权限数组。
this.permission = new Array(this.numberOfRoles).fill(0);
for (let j = 0; j < this.numberOfRoles; j++) {
this.permission[j] = new Array(this.numberOfPermission).fill(0);
}
这解决了如下未定义的问题
enter image description here