angular - Angular 6:如何从另一个组件访问元素
问题描述
在footer.component
signIn() {
const el = this.elRef.nativeElement.querySelector('.UserTrigger');
console.log(el); // null
el.dispatchEvent(new Event('click'));
}
--
<a (click)="signIn()">Sign In</a>
在header.component.html
<div #userTrigger class="UserTrigger" (click)="loginModal()">Sign In</div>
问题
在上面我试图单击页脚中的登录按钮,这将触发位于页眉中的登录模式。我知道我可以只引用页脚中的模式,但这不是我想要的。
如何从另一个组件访问元素?
解决方案
您是否考虑过将与登录相关的事件/状态迁移到专用服务中?然后,您可以将服务注入到任何需要响应(单击)事件的组件中,并将其路由到您的模态所在的组件中。这解耦了两个不共享父/子关系的组件需要以这种方式交互的事实。
推荐阅读
- php - Javascript WebSocket WSS 和 PHP 套接字
- python - 如何使用 Python 从 Azure Blob 容器中读取文件
- spring-boot - 如何在标准构建器中使用映射列获取 id
- c - strcpy 不会将源字符串复制到目标
- excel - Excel 中的可编辑链接单元格
- haskell - 在 lambda 演算中编写用于重命名术语的递归函数
- python - “类型”对象不可迭代
- c# - 从 JObject 获取所有值并将其保存到列表 c#
- javascript - 如何防止过于频繁地执行 ajax 函数
- r - 如何将这样的值转换为 R 中的日期类型?