angular - 带有href的简单锚标记导致Angular中的页面刷新
问题描述
我有一个 Web 组件,它使用一个简单的锚标记和一个指向路由的 href。
单击链接时,应用程序将重新加载。
我不能使用 routerLink(Web 组件不是 Angular)。避免页面重新加载的最佳方法是什么?
解决方案
为了解决这个问题,我会监听对“a”标签的点击,并在它不包含“routerlink”属性时阻止默认行为。
@HostListener('window:click', ['$event'])
onClick(e: any) {
const path = e.composedPath() as Array<any>;
const firstAnchor = path.find(p => p.tagName && p.tagName.toLowerCase() === 'a');
if (firstAnchor && !firstAnchor.hasAttribute('routerlink')) {
const href = firstAnchor.getAttribute('href');
this.router.navigateByUrl(href);
e.preventDefault();
}
}
推荐阅读
- php - 如何使用 PHP 从 ACE 编辑器中获取所有值
- javascript - Javascript:在图像前添加分页符
- rxandroidble - 如何将 RxAndroidBLE 库包含到我的项目中
- sql - 当我从后端运行此查询时,出现错误
- css - 为 Angular Material 和自定义组件提供具有自定义颜色的多个主题
- angular - 为什么每次创建组件后我都会参考以前的数据?
- flutter - Flutter - 文本字段标签溢出切断文本
- flutter - 如何在颤动中使用底部导航器'OnTap'
- matlab - 如何创建基于矩阵填充颜色的图片?
- ionic-framework - Ionic 4 硬件后退按钮在双击时关闭不起作用