[英]How can i pass data of clicked row from one component to another component without passing to the url
我有一张垫子桌。 任何行的 onclick 我都可以像这样控制该行的所有信息:
{
sid: "105",
vid: "2",
serviceName: "Chicken Tikka",
serviceDescription: "Non Veg Dish",
createdOn: "2019-05-21 13:08:43.124354"
}
我想传递给我的另一个组件,我想将它存储在一个变量中。
下面是我的代码:
services.component.html
<tr mat-header-row *matHeaderRowDef="['sid','vid','serviceName','createdOn']"></tr>
<tr class="rowhover" (click)="displayData(row,row.sid)" mat-row *matRowDef="let row; columns: ['sid','vid','serviceName','createdOn']"></tr>
</table>
services.component.ts
displayData(row,sid)
{
console.log(row);
this.router.navigate(["/vendor-list/vendor/a/services/a/details/",sid]);
}
经过研究,我得到了答案:
1)首先我们必须在服务中创建像“dataRow”这样的变量。 2)在我们的父组件中
displayData(row,sid:any)
{
// console.log(row);
this.apiService.dataRow=row;
this.router.navigate(["/vendor-list/vendor/a/services/a/details/",sid]);
}
3) 在子组件中
dataRow1:any;
ngOnInit() {
this.dataRow1=this.apiService.dataRow;
console.log(this.dataRow1.serviceName);
}
有一些方法可以解决您的问题,我会说使用服务是解决问题的好方法。 请看这里https://angular.io/tutorial/toh-pt4
要存储数据:在全局 scope 中创建一个变量,如 => data: string; 当您获取数据时,然后键入 => this.data = api.data,数据将存储在组件中要在所有组件中使用数据,您可以将其保存在服务中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.