【发布时间】:2020-09-16 18:20:43
【问题描述】:
如何将多个变量从一个组件传递到服务并在 angular 9 中将其获取到另一个组件中? 我非常努力地解决了这个问题,但我找不到任何解决方案。 我正在尝试将包含一些数据的变量从 sendComponent 传递/发送到服务,并将相同的数据获取到另一个 receiveComponent。单击 send.Html 上的按钮并导航到 receiveComponent。
sent.Html: 我想在这个 html 中按下 OK 按钮后推送数据
<button class="btn btn-primary pull-right" (click)="onPushData()">
<i class="fa fa-check" aria-hidden="true"></i>
OK
</button>
sendComponent: secondTableData、totalPrice 和 totalPrice 这些是包含需要传递给 service.ts 的数据的变量 可能这是错误的方法强>
onPushData(){
let tData = this.secondTableData // want to push secondTableData variable
let t = this.totalPrice; // want to push totalPrice variable
let d = this.totalPrice // want to push totalQuantity variable
this.dataShareService.onPushTable(tData);
console.log(tData);
this.routerService.navigate(['./billprint'])
}
Service.ts:
@Injectable({
providedIn: 'root'
})
export class DataShareService {
onPushTable(tData) {
--Do something here--
}
}
receiveComponent: 我想在这个组件中获取数据
recDataFromService() {
--do something here--
}
receive.Html: 在此处显示数据
<tr *ngFor="let data of recData;let i = index">
<td>{{i+1}}</td>
<td>{{data.itemName}}</td>
<td>{{data.Quantity}}</td>
<td>{{data.retailRate}}</td>
</tr>
请帮我解决这个问题...如果您对此有任何想法,请分享您的答案..
示例: 这是在 secondTableData 中包含数据数组(itemName, Quantity,retailRate ....)的代码
//To Copy data of First table to Second table
secondTableData = [];
updateSecondTable(data) {
let foundItem = this.secondTableData.find((item) => item.itemName ===
data.itemName);
if (foundItem) {
foundItem.rate = data.retailRate;
foundItem.Quantity += 1;
foundItem.retailRate += data.retailRate;
this.getColumnTotal(); // <----- To call total Price
return;
}
this.secondTableData.push({
itemName: data.itemName,
rate:data.retailRate,
Quantity: 1,
retailRate: data.retailRate,
})
this.getColumnTotal();
}
// to calculate total amount
getColumnTotal() {
const { Quantity, Price } = this.secondTableData.reduce((acc, item) =>
{
acc.Quantity += item.Quantity;
acc.Price += item.retailRate;
return acc;
}, {
Quantity: 0,
Price: 0
});
this.totalQuantity = Quantity;
this.totalPrice = Price;
}
Receive.html: 这是我要在数组中显示数据的代码
我想将这些变量(secondTableData、totalQuantity、TotalPrice...)推送到接收组件中,并希望以表格形式显示。
<table class="table table-bordered table-sm">
<thead>
<tr>
<th>SN</th>
<th>Product</th>
<th>Unit</th>
<th>Price</th>
<th>Total</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let recData of myData;let i = index"> <!--i want to display here -->
<td>{{i+1}}</td>
<td>{{recData.itemName}}</td>
<td>{{recData.Quantity}}</td>
<td>{{recData.retailRate}}</td>
<td></td>
</tr>
<tr class="small" style="height: 10px;">
<td colspan="3" style="border: none;"></td>
<td>Gross Amount:</td>
<td>1100</td>
</tr>
<tr class="small">
<td colspan="3" style="border: none;"></td>
<td>Discount:</td>
<td>100</td>
</tr>
<tr class="small">
<td colspan="3" style="border: none;"></td>
<td>VAT</td>
<td>30</td>
</tr>
<tr class="small">
<td colspan="3" style="border: none;"></td>
<td>Net Amont</td>
<td>1030</td>
</tr>
</tbody>
</table>
【问题讨论】:
标签: angular angular-ui-router angular9