在数据网格中的同级组件之间共享数据
问题描述:
如何在同级组件之间传递数据?比方说,我有一个不大不小的数据录入格,看起来像这样的:在数据网格中的同级组件之间共享数据
<tr *ngFor="let item of frm.controls.items.controls; let i=index" [formGroupName]="i">
<td><input type="text" formControlName="id" /></td>
<td><input type="text" formControlName="name" /></td>
</tr>
而且,我们说,有一些打字稿是被触发或者在valueChanges
或focusout
事件处理中的每一个这些输入的数据领域。我的问题是,如果我需要访问专注于name
字段的id
数据。我怎样才能做到这一点?
onNameFocusout = function(nameControl) {
//get a handle of id control for the ROW that this name control belongs to
因此,所有我曾访问是name
控制某一行,我需要的id
控制同一行。
我能想到几个不同的方式来做到这一点的:
在名称控件的HTML,在经过焦距偏离事件的ID控制。类似于
<input type="text" formControlName="name" onNameFocusout="(frm.controls.items.controls[i].controls.id, frm.controls.items.controls[i].controls.name)" />
使用数据共享服务。在网格中输入的任何值也可在数据共享服务上使用,以供任何组件检索。这仍然需要知道该行的索引来检索数据。
有关如何以更好的方式完成此任务的建议,或者其中任何一种方法都应该正常工作。
感谢
答
你应该能够得到模糊值:
模板:
<tr *ngFor="let item of frm.get('items'); let i=index" [formGroupName]="i">
<td><input type="text" formControlName="id" /></td>
<td><input type="text" (blur)="onBlur(frm.get('items.' + i + '.id'))" formControlName="name" /></td>
</tr>
组件类:
onBlur(control: FormControl) {
let value = control.value;
// value = value of id
}