我在父组件中有一个表,当单击某行时,直到那一刻,我将使用ngIf的子组件绘制为false。
现在,我想绘制子组件,调用子组件的函数并将行传递给它,而我不仅需要传递数据,还必须在子组件中对其进行处理,这就是为什么我需要调用一个函数
//查看父亲
<jhi-gestion-imputacion-detalle
(volverEvent)="volverDetalle($event)"
[childReportesParte]="parentReportesParte"
[parentVerTabla]="childVerTabla"
*ngIf="!parentVerTabla"
>
</jhi-gestion-imputacion-detalle>
....
<tr (click)="detalle(parte)">
//控制者父亲
ViewChild(GestionImputacionDetalleComponent) child: GestionImputacionDetalleComponent;
detalle(parte: GestionImputacionData) {
this.parentVerTabla = false;
this.parte = parte;
this.child.cargar(this.parte); <-- child is undefined
}
问题是“子”未定义。我在论坛上看到的是“ AfterViewInit”,但是那是控制器启动时(不是我所需要的),通过单击父组件表的一行来绘制子组件。
如何通过单击表的行来进行操作,绘制子组件,并在创建子组件时调用其功能。
答案 0 :(得分:1)
您应该使用# subsetting with closed intervals
xdata[Time %inrange% ydata[, .(StartTime, EndTime)]]
来从DOM中隐藏子组件。
[hidden]
从DOM中删除了子组件,因此*ngIf
不起作用。但是使用@viewChild()
时,您只隐藏了元素,因此[hidden]
可以正常工作。
@viewChild()
<jhi-gestion-imputacion-detalle
(volverEvent)="volverDetalle($event)"
[childReportesParte]="parentReportesParte"
[parentVerTabla]="childVerTabla"
[hidden]="parentVerTabla"
>
属性。答案 1 :(得分:0)
另一种方法是在孩子中使用@Input传递数据,并考虑到当孩子可见时,将调用孩子的ngOnInit
//children
export class HelloComponent implements OnInit {
@Input() name: string;
ngOnInit()
{
this.name=this.name+" updated"
}
}
。
//parent
<hello *ngIf="childVisible" name="{{ name }}"></hello>
<button (click)="childVisible=!childVisible">click</button>