당신이 쓴 것을 바탕으로 나는 당신이하고있는 일을 이해하려고 노력했습니다. 이후 귀하의 데이터 구조를 보지 못했지만 나는 그것에 대해서도 짐작 했었지만 사용했던 데이터 구조를 제공 할 것입니다.
참고 :이 솔루션을 사용하려면 각 무게를 미리 계산하여 적절한 개체에 넣어야합니다. 내 예를 들어, 나는 단지 그것을 하드 코드했다.
업데이트 11/6/2017 : 원래 포스터의 요구 사항을 확인한 후 Typescript 파일이 업데이트되고 있습니다.
타이프 스크립트 파일 :
colNames = ['Number', 'Weight', 'Value', 'Total Weight'];
selectedBlends = [];
// scaffolded data that should reflect what is coming into the app
incomingData = [
{
bales: [
{
number: 1,
weight: 10,
value: '$10'
},
{
number: 2,
weight: 20,
value: '$20'
}
],
},
{
bales: [
{
number: 5,
weight: 50,
value: '$50'
},
{
number: 6,
weight: 60,
value: '$60'
}
],
},
{
bales: [
{
number: 9,
weight: 90,
value: '$90'
},
{
number: 10,
weight: 110,
value: '$110'
}
],
}
];
constructor() {
this.processBales(this.incomingData); // I am passing the scaffolded data here. Likely optional
}
processBales(incomingData: any) {
for (const data in incomingData) {
if (incomingData.hasOwnProperty(data)) {
this.createBalesObject(incomingData[data]);
}
}
}
createBalesObject (data) {
this.selectedBlends.push({
bales: data.bales,
totalWeight: this.calculateTotalWeight(data.bales)
});
}
calculateTotalWeight(bales) {
let totalWeight = 0;
for (const bale in bales) {
if (bales.hasOwnProperty(bale)) {
totalWeight += bales[bale].weight;
}
}
return totalWeight;
}
HTML 파일 : (나는 제거한 stylings가 간결에 대한 테이블의 화면 캡처를 만드는 데 사용)
<table>
<thead>
<tr>
<th *ngFor="let col of colNames">
{{col}}
</th>
</tr>
</thead>
<tbody *ngFor="let blend of selectedBlends">
<tr *ngFor="let bale of blend.bales; let index=index">
<td>{{bale.number}}</td>
<td>{{bale.weight}}</td>
<td>{{bale.value}}</td>
<td>
<span *ngIf="index==1">{{blend.totalWeight}}</span>
</td>
</tr>
</tbody>
</table>
출력 표합니다 데이터의 두 행은 가중치를 합산하고이를 마지막 열에 표시합니다. 이것은 당신이이 질문에서 말하는 것이라고 생각합니다.
최종 참고 : 이 코드는 사용자의 표현을 기반으로, 한 번에 2 행으로 작업하는 것으로 가정합니다. 그렇지 않다면 *ngIf
을 변경해야합니다. <span>
정확한 템플릿과 실제 데이터로 plunkr을 만들 수 있습니까? 나는 그것을 포크로 만들고 도움을 시도 할 수있다. 정확히하고 싶은 것을 얻을 수 없습니까? '
@Bud이 문제를 stackblitz 또는 plunker에서 일부 데이터로 복제하십시오. –
데이터 형식 및 시도하려는 것을 표시 할 수 있습니까? 왜냐하면, 질문을 더 명확히하지 않으면, 당신이 원하는 것을 예측하기가 어렵습니다. –