尝试从父级调用childComponent方法时出现错误
子TS.
export class ChildComponent implements OnInit {
ChildMethod(){
console.log('test');
}
constructor() { }
}
父T
@ViewChild(ChildComponent , {static : false}) child!:ChildComponent ;
CallChild(){
this.child.ChildMethod();
}
当我调用CallChild时我得到这个错误不能读取在GpmainComponent的未定义的属性(阅读'ChildMethod').CallChild(gpmain.component.ts:39:16)
4条答案
按热度按时间brvekthn1#
尝试在构造函数中声明子组件。
在父文件中.ts:
4c8rllxm2#
这与
static: false
和时序有关。当设置为false时,
ViewChild
查询将在更改检测运行之后、ngAfterViewInit
之前解析。这意味着,例如,如果您尝试在ngOnInit
中调用,则child
将是未定义的。您有两个选项:
*ngIf
下,则设置static: true
,这样它将很快得到解决,并在ngOnInit
中可用yzuktlbb3#
感谢您花时间回答这个问题。我在ngAfterViewInit中尝试了true和false。
我在从父组件上的按钮初始化两个组件之后调用子组件。
plicqrtu4#
这可能取决于您何时调用
CallChild
。如果在视图呈现之前调用它,则
this.child
将为undefined
,从而导致错误。由于您是通过单击按钮来启动子函数调用的,您是否尝试过使用模板变量,并在父模板的
(click)
声明中直接调用它?