在我的角度2项目中,当加载应用程序并显示第一个组件时,我可以单击固定按钮以显示菜单。但如果我去另一条路线尝试点击按钮,则没有任何反应。问题是,按钮点击事件在jquery文件中描述,我在组件初始化之后加载 - $ .getScript(' assets / js / app.js',function(){});因为我将jquery网站移植到有角度的地方。 我的导航栏标记位于视图上方的路由器外部上方。这可能是原因吗?我觉得在查看页面更改后,父DOM不可见。
app的结构:
<navbar></navbar>
<router-outlet></router-outlet>
<pageFooter></pageFooter>
主页组件:
ngAfterViewInit() {
...
$.getScript('assets/js/app.js', function(){});
}
我还试图直接操纵和导航来自孩子,使用jQuery简单地添加课程,但它并没有发生。
有什么建议吗?
答案 0 :(得分:0)
您需要创建一个&#34;服务&#34;在子组件和父组件之间进行通信。
我在这里回答了类似的问题: Angular 2 - Using RXJS Observables
如果您需要任何帮助,请在评论中提问:)
答案 1 :(得分:0)
基本上,就目前而言,我通过在组件视图中放置navbar标签来解决它。我知道它不是最好的解决方案,需要在每个组件中加入navbar标签,但它有效。但希望有更好的方法。我不知道如何使用服务来使我的navbar组件操纵DOM。
答案 2 :(得分:0)
如果您在编译时知道组件(标记)的类型,则可以将其注入:
constructor(private navBar:NavBarComponent) {}
这将注入该类型的最接近的祖先组件。