targetList: any = [];
public datavalue = [
{
value: ""
}
]
this.httpService.service("Fields").subscribe(
(
targetList => {
this.targetList = targetList;
console.log(this.targetList);
for (var i = 0; i < this.targetList.length; i++) {
if (this.targetList[i].results.multiple == true) {
this.targetList[i].results.data = this.datavalue;
}
}
}
),
error => { alert(`Can't get Fields.`); }
);
addvalue(i): void {
var dataObj = {
value: ""
};
this.targetList[i].results.data.push(dataObj);
}
removevalue(i, index) {
this.targetList[i].results.data.splice(index, 1);
}
Die Daten, die ich in meinem Dienst ist wieDaten zu einem Objekt hinzufügen
[
{
"results":{
"field1":false,
"field2":0,
"multiple":true
}
},
{
"results":{
"field1":false,
"field2":0,
"multiple":true
}
},
{
"results":{
"field1":false,
"field2":0,
"multiple":false
}
}
]
In diesem Ergebnis folgt, wenn mehrere = true dann, wie diese Daten hinzuzufügen.
[
{
"results":{
"field1":false,
"field2":0,
"multiple":true,
"data" :[
{
value : ""
}
]
}
},
{
"results":{
"field1":false,
"field2":0,
"multiple":true
"data" :[
{
value : ""
}
]
}
},
{
"results":{
"field1":false,
"field2":0,
"multiple":false
}
}
]
Hilfe in das Hinzufügen dieses Formats, da die Felder dynamisch sind. Ich rende das in die HTML-Seite.
<div *ngIf="targetList.length>0">
<!-- Index i for List of Elements-->
<div *ngFor="let target of targetList; let i = index">
<fieldset>
<section>
<label class="label">{{target.results.field1}}</label>
<div *ngIf="target.results.multiple else singletext" class="table-responsive">
<table class="table table-bordered">
<tbody>
<!-- Index j for Multiple Data within an Element-->
<tr *ngFor="let data of target.results.data; let j = index">
<td>
<label class="input">
<input type="text" name={{target.results.field1+i+j}} ngModel class="input-sm">
</label>
</td>
<td>
<label class="input">
<a class="btn btn-danger btn-sm" (click)="removevalue(i,j)"><i class=" fa fa-remove"></i></a></label>
</td>
</tr>
<tr>
<td colspan="2"><a class="btn btn-success btn-sm" (click)="addvalue(i)">Add Value</a></td>
</tr>
</tbody>
</table>
</div>
<ng-template #singletext>
<label class="input">
<input type="text" name={{target.results.feild1+i}} ngModel class="input-sm">
</label>
</ng-template>
<label class="label">{{ target.results.desc }}</label>
</section>
</fieldset>
</div>
</div>
In diesem, wenn ich den obigen Code verwenden, ist es auch Datenliste zum zweiten Objekt ist das Hinzufügen, während ich es nur für das erste Objekt hinzufügen müssen.
Können Sie den Servicecode anzeigen? Verwenden Sie den Observable-Operator ".map"? – DeborahK