我正在尝试使用@ViewChild 访问子组件方法,它可以工作,但我也被迫加载它的模板,我不想这样做,因为这也迫使子组件OnInit, AfterViewInit
和其他系统功能运行.
我希望它们仅在我在不同的场景中调用此子组件时运行,但我想在 AppComponent 中按需访问此子组件的自定义方法。
那么我该怎么做呢?
这是一个描述问题的 plunker:http: //plnkr.co/edit/FT6GTJ8mmUnyFxJAPbGV
你可以看到dashboards test() 函数被调用了,这就是我想要的,然而,它的ngOnInit 函数也被初始化了,这是我不想要的。
template: <h1>AppComponent</h1><my-dashboard></my-dashboard>
我虽然很明显<my-dashboard></my-dashboard>
从 AppComponent 模板中删除,不加载仪表板模板,但是我得到了仪表板本身没有定义的错误(如果你删除<my-dashboard></my-dashboard>
并再次运行 plunker,你可以看到错误)即使我已经包含它通过导入语句。
我错过了什么?
编辑 - - - - - - - - - - - - - - - - - - - - - - - - - -------------------------------------------------- --------------
因此,最后,您必须使用服务来存储可重用的数据/功能才能正常工作。