如何处理 Angular 单页面应用里的 a 标签,避免点击后重新加载整个应用

简介: 如何处理 Angular 单页面应用里的 a 标签,避免点击后重新加载整个应用

问题描述

客户已经实现了一些“free html”组件,它是 HTML 的标题和包装器,与 OCC 响应一起作为内容。

<div [innerHTML]="data?.content | safeHtml"></div>

这个 HTML 里包含了 anchor element:


<div class="starItem">
   <a href="https://www.customer.com/de/jerry/c/010101">
      <div class="starImg" style="background-image:url(https://media.customer.com/medias/webmaster/homepage/images/jerry/star1.jpg);"></div>
      <p>jerry</p>
   </a>
</div>



不幸的是这个 a 标签导致页面重新加载并且不使用 Angular 路由,换言之,它会终止 SPA 的状态。


如何避免这种行为?比如实现一些侦听器并检查点击是否应该改为执行一些路由器操作并 prevent default?


解决方案

https://github.com/SAP/spartacus/pull/15317/commits


解决方案的详细实现:


在 Angular module 里,导入 RouterModule

image.png


使用 @HostListener,拦截元素的 click 事件。


image.png


当 handleClick 方法触发时,说明宿主元素已经被点击了。此时判断 event 对象的类型是否为 HTMLAnchorElement,如果是,说明确实是 a 这个元素被点击了。


然后使用 event 对象的 preventDefault 阻止 a 标签页造成的整个应用重新加载,然后使用 Angular route 的 navigate 进行页面内部跳转即可。


相关知识点

相关文章
|
1月前
|
存储 前端开发 API
浅谈 Angular 应用前端消息显示机制的一个实际需求
浅谈 Angular 应用前端消息显示机制的一个实际需求
12 0
|
3月前
|
设计模式 JavaScript 前端开发
什么是 Angular 应用里的 Custom provider
什么是 Angular 应用里的 Custom provider
33 2
|
4月前
Angular 应用里异步打开对话框的技术实现
Angular 应用里异步打开对话框的技术实现
24 0
|
1月前
|
存储 JavaScript 前端开发
Angular 应用 node_modules 子文件夹 @types 的作用介绍
Angular 应用 node_modules 子文件夹 @types 的作用介绍
15 1
|
13天前
|
JavaScript 前端开发 开发者
【TypeScript技术专栏】TypeScript在Angular开发中的应用
【4月更文挑战第30天】本文探讨了TypeScript在Angular开发中的应用。Angular与TypeScript的结合利用了静态类型检查和ECMAScript特性,简化了大型Web应用的开发。文章涵盖组件、数据绑定、依赖注入、服务、守卫和路由以及模块化等方面,展示了如何在Angular中有效使用TypeScript。此外,还提到了TypeScript的高级应用,如泛型、高级类型和装饰器。掌握这些知识将有助于提升Angular应用的可维护性和可扩展性。
|
4月前
|
Web App开发 UED 开发者
谈谈企业级 Angular 应用的二次开发 - 基于 Angular Component 替换的 Extensibility 支持案例介绍
谈谈企业级 Angular 应用的二次开发 - 基于 Angular Component 替换的 Extensibility 支持案例介绍
42 1
|
2月前
|
开发框架 前端开发 安全
Angular:构建现代Web应用的终极选择
Angular:构建现代Web应用的终极选择
28 0
|
3月前
|
Go
Mac安装Angular并部署运行应用
Mac安装Angular并部署运行应用
|
4月前
|
缓存 前端开发 JavaScript
Angular Service Worker 在 PWA 应用 HTTP 交互中扮演的角色
Angular Service Worker 在 PWA 应用 HTTP 交互中扮演的角色
45 0
|
4月前
|
缓存 JavaScript 前端开发
Angular PWA 应用什么情况下会出现 504 error
Angular PWA 应用什么情况下会出现 504 error
53 0