angular - 创建子组件并调用函数。角 5.2.1
问题描述
我在父组件中有一个表,当单击一行时,我绘制了一个子组件,该子组件的 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”,但那是控制器启动的时候,不像我需要的那样,通过单击父组件表的一行来绘制子组件。
如何通过单击表格的行来绘制子组件,并且可以在创建它时调用它的函数。
解决方案
您应该使用[hidden]
从 DOM 中隐藏子组件。
*ngIf
从 DOM 中删除子组件,因此@viewChild()
将不起作用。但是使用[hidden]
,您只会隐藏元素,因此@viewChild()
可以使用。
<jhi-gestion-imputacion-detalle
(volverEvent)="volverDetalle($event)"
[childReportesParte]="parentReportesParte"
[parentVerTabla]="childVerTabla"
[hidden]="parentVerTabla"
>
- [隐藏]
display: none;
-根据条件为元素的样式添加属性。 - *ngIf - 根据条件从 DOM 中添加/删除元素。
推荐阅读
- laravel - Laravel 8 中超出了最大堆栈深度
- javascript - 为什么在我成功调用我的 API 后 Access-Control-Allow-Origin 会被删除
- jquery - 图像弹出在使用 jquery 的角度应用程序中不起作用
- reactjs - 隐藏 Material-UI 自动完成弹出窗口,直到输入文本
- apache-kafka-streams - 使用 Kafka Streams Binder 和函数式处理器处理 Spring Cloud Streams 中的处理异常示例
- sqlite - sqlite BEGIN EXCLUSIVE 失败事务是否在“busy_timeout”期间不断重试?
- sql - 连接 2 个表的数据库设计最佳实践
- amazon-web-services - 仅通过使用 SQS::QueuePolicy 'principal' 属性的 Lambda 函数来限制对 SQS 的访问
- html - 导航栏菜单响应式
- java - Firebase 实施后没有静态方法