Sou*_*war 3 angular2-forms angular2-template angular2-formbuilder angular
我试过几次迭代formArray,
这是这个案例的plunker链接https://plnkr.co/edit/4kiJF7cL5VKwn3KnvjvK?p=preview
我想要像这样的插件https://plnkr.co/edit/zg6nbFULl0WlTZ1sVn5h?p=preview
这是我的情景
[
{
"id": 1,
"legend": "businessModule",
"group": [
{
"id": 1,
"permission": {
"controleType": "ff",
"id": 2,
"key": "create Business"
},
"roles": [
{
"id": 1,
"name": "self"
},
{
"id": 2,
"name": "other"
}
]
},
{
"id": 1,
"permission": {
"controleType": "ff",
"id": 2,
"key": "edit business"
},
"roles": [
{
"id": 1,
"name": "self"
},
{
"id": 2,
"name": "other"
}
]
}
]
},
{
"id": 2,
"legend": "PanicModule",
"group": [
{
"id": 1,
"permission": {
"controleType": "ff",
"id": 2,
"key": "create panic"
},
"roles": [
{
"id": 1,
"name": "self"
},
{
"id": 2,
"name": "other"
}
]
},
{
"id": 1,
"permission": {
"controleType": "ff",
"id": 2,
"key": "edit panic"
},
"roles": [
{
"id": 1,
"name": "self"
},
{
"id": 2,
"name": "other"
}
]
}
]
}
];
Run Code Online (Sandbox Code Playgroud)
对于以上阵列I试图建立反应性形式,我需要复选框许可,角色阵列下组
所以我试着像这样迭代数组
component.ts
validateForm() {
this.roleForm = this.fb.group({
roleName: ['', Validators.required],
roleDescription: ['', Validators.required],
permissionModules: this.fb.array([])
});
this.initModule()
}
Run Code Online (Sandbox Code Playgroud)
initModule(){
const contractArray = <FormArray>this.roleForm.controls['permissionModules'];
console.log(contractArray, 'contractArray')
this.form_objects.forEach(element => {
this.newElement = element;
console.log(this.newElement, 'this.newElement')
// element.forEach(group => {
contractArray.push(this.fb.group({
id: [''],
legend:this.newElement.legend,
group: this.fb.array([ ])
}));
// }
this.initGroup(element, contractArray)
}
}
initGroup (element, contractArray) {
console.log(element, '@@@@@@@@@@@@@@@@@@@@@@',contractArray)
// const groupArray = <FormArray>contractArray.controls['group'];
this.groupArray = <FormArray>this.roleForm.controls.permissionModules.controls[1];
console.log(this.groupArray, 'groupArray&&&&&&&')
element.group.forEach(group => {
this.newGroup = group;
console.log(this.newGroup, 'this.newGroup')
/* if(typeof (this.groupArray) !== 'undefined') {
this.groupArray.push(this.fb.group({
id: [''],
legend:this.newGroup.legend
}));
}*/
}
}
submit(value) {
this.result = value
}
Run Code Online (Sandbox Code Playgroud)
我的HTML就像
<form [formGroup]="roleForm" (submit)="submit(roleForm.value)">
<h3>Add trust</h3>
<div class="form-group">
<label>Name</label>
<input type="text" class="form-control" formControlName="roleName">
</div>
<div class="form-group">
<label>roleDescription</label>
<input type="text" class="form-control" formControlName="roleDescription">
</div>
<div class="form-group">
<label>permission roles</label>
<div formArrayName="permissionModules">
<div *ngFor="let contract of roleForm.controls.permissionModules.controls;
let i=index" class="panel panel-default">
<div [formGroupName]="i">
{{contract.value.legend}}
<!-- <input type = "checkbox" formControlName="legend">
{{contract.value.legend}}-->
</div>
</div>
</div>
</div>
<button type="submit">Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)
但是我无法在上面的例子中迭代二级数组在initGroup()函数groupArray下,我不知道我的错误是什么,我搜索了许多网站都只告诉了一个级别的迭代,我是angular2的新手,所以请任何人帮助我提前谢谢
我解决了我的问题
运用 <FormArray>this.roleForm.controls['permissionModules']).at(k).get('group') as FormArray
synatax我能迭代嵌套数组,
这是plunk链接,你可以看到我的方法 http://plnkr.co/edit/AVqWKkUCNc1HjosOpUWf?p=preview
| 归档时间: |
|
| 查看次数: |
7063 次 |
| 最近记录: |