如何使用ngModel构建JSON数据,ngModel是组件内部形式,表格是外部形式,我在表格中使用ngFor重复了ngModel。这是我的html的样子:
app.component.html:
layout_above="@+id/bottom_navigation
这是我的app.component.ts
<div>
<form>
<div class="form-group row">
Nama Role : <input type="text" [(ngModel)]="nama_role" [ngModelOptions]="{standalone: true}" class="form-control" placeholder="Nama Role" pattern="[a-zA-Z-0-9. ]+">
</div>
</form>
<div>
Pilih Hak :
<table class="mytable">
<tr>
<th>No</th>
<th>Kode Aplikasi</th>
<th>Nama Aplikasi</th>
<th>View?</th>
<th>Insert?</th>
<th>Edit?</th>
<th>Delete?</th>
</tr>
<tr *ngFor="let sources of source; let a=index">
<td>{{a + 1}}</td>
<td>{{sources.KODE_APPLICATION}}</td>
<td>{{sources.NAMA_APPLICATION}}</td>
<td><input type="checkbox" [(ngModel)]="sources.hak_akses" (change)="toggle($event)" /> {{sources.HAK_AKSES}}</td>
<td><input type="checkbox" [(ngModel)]="sources.hak_insert" (change)="toggle($event)" />{{sources.HAK_INSERT}}</td>
<td><input type="checkbox" [(ngModel)]="sources.hak_edit" (change)="toggle($event)" />{{sources.HAK_EDIT}}</td>
<td><input type="checkbox" [(ngModel)]="sources.hak_delete" (change)="toggle($event)" />{{sources.HAK_DELETE}}</td>
</tr>
</table>
</div>
<div class="row show-grid">
<button class="btn btn-primary" (click)="save()">Save</button>
</div>
</div>
这是我的JSON数据,当我使用我的REST API时,它在源类型中使用ngFor循环:
export class frmInputMasterRole {
public sKodeRole: any;
sStorage:any;
hak_akses:any;
hak_insert:any;
hak_edit:any;
hak_delete:any;
private busyloadevent: IBusyConfig = Object.assign({}, BUSY_CONFIG_DEFAULTS);
marked = false;
constructor(private frmInputMasterRoleService: FrmInputMasterRoleService, protected router: Router) {
this.sKodeRole = 'Auto Generated';
this.sStorage = sessionStorage.getItem('mAuth');
this.sStorage = JSON.parse(this.sStorage);
this.busyloadevent.busy = this.frmInputMasterRoleService.getListRoleDetail().then(
data => {
this.source = data;
console.log(data);
for (var i of this.source) {
this.hak_akses = i.HAK_AKSES;
}
},
err => {
console.log(err);
}
}
);
}
save(){
console.log(this.hak_akses);
}
toggle(e){
console.log(e.target.checked)
}
cancel(){
this.router.navigate(['/pages/master/rolelist']);
}
}
我想要的是我想在检查最后一行时构建看起来像这样的JSON数据:
[
{
"No":"1",
"KODE_APPLICATION":"APPL00001",
"NAMA_APPLICATION":"Master Bass",
"HAK_AKSES":0,
"HAK_INSERT":0,
"HAK_EDIT":0,
"HAK_DELETE":0
},
{
"No":"2",
"KODE_APPLICATION":"APPL00002",
"NAMA_APPLICATION":"Master Customer",
"HAK_AKSES":0,
"HAK_INSERT":0,
"HAK_EDIT":0,
"HAK_DELETE":0
},
{
"No":"3",
"KODE_APPLICATION":"APPL00003",
"NAMA_APPLICATION":"Master Teknisi",
"HAK_AKSES":0,
"HAK_INSERT":0,
"HAK_EDIT":0,
"HAK_DELETE":0
}
]
我该怎么做?我不知道从哪里开始,因为有一个表用ngModel循环使用ngFor
答案 0 :(得分:1)
代码如下:
@Component({
selector: 'my-app',
template: `<form>
<div class="form-group row">
Nama Role : <input type="text" [(ngModel)]="nama_role" [ngModelOptions]="{standalone: true}" class="form-control" placeholder="Nama Role" pattern="[a-zA-Z-0-9. ]+">
</div>
</form>
<table>
<tr>
<th>No</th>
<th>Kode Aplikasi</th>
<th>Nama Aplikasi</th>
<th>View?</th>
<th>Insert?</th>
<th>Edit?</th>
<th>Delete?</th>
</tr>
<tr *ngFor="let sources of source; let a=index">
<td>{{sources.KODE_APPLICATION}}</td>
<td>{{sources.NAMA_APPLICATION}}</td>
<td><input type="checkbox" [checked]="sources.HAK_AKSES" [(ngModel)]="sources.HAK_AKSES" (change)="toggle(a, sources.HAK_AKSES, \'HAK_AKSES\')"/> {{sources.HAK_AKSES}}</td>
<td><input type="checkbox" [checked]="sources.HAK_INSERT" [(ngModel)]="sources.HAK_INSERT" (change)="toggle(a, sources.HAK_INSERT, \'HAK_INSERT\')" />{{sources.HAK_INSERT}}</td>
<td><input type="checkbox" [checked]="sources.HAK_EDIT" [(ngModel)]="sources.HAK_EDIT" (change)="toggle(a, sources.HAK_EDIT, \'HAK_EDIT\')" />{{sources.HAK_EDIT}}</td>
<td><input type="checkbox" [checked]="sources.HAK_DELETE" [(ngModel)]="sources.HAK_DELETE" (change)="toggle(a, sources.HAK_DELETE, \'HAK_DELETE\')" />{{sources.HAK_DELETE}}</td>
</tr>
</table>
<div class="row show-grid">
<button class="btn btn-primary" (click)="save()">Save</button>
</div>
<custom-comp [myFunc]="handleClick()"></custom-comp>
`
})
export class MainComponent {
source = [];
ngOnInit() {
this.source = [{
"No":"1",
"KODE_APPLICATION":"APPL00001",
"NAMA_APPLICATION":"Master Bass",
"HAK_AKSES":1,
"HAK_INSERT":1,
"HAK_EDIT":1,
"HAK_DELETE":0
},
{
"No":"2",
"KODE_APPLICATION":"APPL00002",
"NAMA_APPLICATION":"Master Customer",
"HAK_AKSES":0,
"HAK_INSERT":0,
"HAK_EDIT":0,
"HAK_DELETE":0
},
{
"No":"3",
"KODE_APPLICATION":"APPL00003",
"NAMA_APPLICATION":"Master Teknisi",
"HAK_AKSES":1,
"HAK_INSERT":0,
"HAK_EDIT":0,
"HAK_DELETE":0
}
];
}
save() {
let payload = {
"nama_role": this.nama_role,
"details": this.source
};
console.log(payload);
}
toggle(index, val, key) {
this.source[index][key] = val ? 1 : 0;
}
}
干杯!