创建子组件并调用函数。角5.2.1

时间:2019-02-15 09:01:31

标签: angular

我在父组件中有一个表,当单击某行时,直到那一刻,我将使用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”,但是那是控制器启动时(不是我所需要的),通过单击父组件表的一行来绘制子组件。

如何通过单击表的行来进行操作,绘制子组件,并在创建子组件时调用其功能。

2 个答案:

答案 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" > 属性。
  • * ngIf -根据条件从DOM中添加/删除元素。

答案 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>

stackBlitz