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

news2024/11/26 20:29:13

问题描述

客户已经实现了一些“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

解决方案的详细实现:

  1. 在 Angular module 里,导入 RouterModule

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

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

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

相关知识点

  • Event 接口的 preventDefault() 方法告诉 user agent,如果事件没有得到显式处理,则不应像通常那样执行其默认操作。在我们这个例子,即阻止 a 元素被点击后触发的页面 reload 动作。

事件继续像往常一样传播,除非它的事件侦听器之一调用 stopPropagation() 或 stopImmediatePropagation(),其中任何一个调用都会立即终止事件的传播。

  • HTMLAnchorElement: HTMLAnchorElement 接口表示超链接元素,并提供特殊的属性和方法来操纵此类元素的布局和表示。该接口对应于<a>元素。 注意不要与 <link> 混淆,后者由 HTMLLinkElement 表示。

  • route: 定义单个路由的配置对象。 一组路由收集在 Routes 数组中以定义 Router 配置。路由器尝试使用此对象中定义的配置选项将给定 URL 的段与每个路由进行匹配。本例我们使用了 router 的 navigate 方法进行单页面应用的内部导航。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/50142.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux源码——目录作用

Linux Linux是啥&#xff0c;不用多说&#xff0c;其源码结构也非常清晰。有以下理解&#xff1a; arch 每个系列的CPU都有一个对应的文件夹&#xff0c;里面包含每种CPU具体的操作&#xff0c;单独具体粗来每种CPU独有的管理或者操作。其他的文件夹都是通用的操作。 arch (…

孤核函数-isolation kernel

1.孤立核 一看到核函数&#xff0c;我们第一时间想到的就是核函数通过升维或者降维的方式来计算数据之间的相似度。他在SVM和聚类算法中应用广泛。 我们就直入主题来看一下孤核函数的数学推导。 在d维的空间分布着n个点。数学表达式为. 如图&#xff1a;一共20个点分布在2维空间…

浅析linux内核网络协议栈--linux bridge

1 . 前言 本文是参考附录上的资料整理而成&#xff0c;以帮助读者更好的理解kernel中brdige 模块代码。 2. 网桥的原理 2.1 桥接的概念 简单来说&#xff0c;桥接就是把一台机器上的若干个网络接口“连接”起来。其结果是&#xff0c;其中一个网口收到的报文会被复制给其他…

深入了解BLE(Bluetooth 5.3)持续更新...

目录 1 BLE的优点和局限性 1.1 BLE与经典蓝牙的区别 1.2 局限性 1.2.1 数据吞吐量 1.2.2 范围 1.3 BLE优势及应用 1.4 BLE的角色 1.5 BLE的层次结构 1.5.1 物理层&#xff08;PHY&#xff09; 1.5.2 链路层 1.5.2.1 数据包格式 1.5.2.2 状态机 1.5.2.3 设备地址 …

PTA_1164 Good in C_模拟

PTA_1164 Good in C_模拟 1164 Good in C 分数 20 全屏浏览题目 切换布局 作者 陈越 单位 浙江大学 When your interviewer asks you to write "Hello World" using C, can you do as the following figure shows? Input Specification: Each input file conta…

STM32实战总结:HAL之FSMC控制TFT-LCD

什么是FSMC&#xff1f; FSMC(Flexible Static Memory Controller&#xff0c;可变静态存储控制器)是STM32系列采用的一种新型的存储器扩展技术。在外部存储器扩展方面具有独特的优势&#xff0c;可根据系统的应用需要&#xff0c;方便地进行不同类型大容量静态存储器的扩展。 …

计算机网络 HTTP

概念 Web 基础 HTTP &#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;。WWW &#xff08;World Wide Web&#xff09;的三种技术&#xff1a;HTML、HTTP、URL。RFC&#xff08;Request for Comments&#xff0c;征求意见书&#xff09;&#…

HTTP DDOS攻击有什么类型和特点?

一、攻击类型 1、 HTTP floods 该攻击类型分为HTTP GET request floods和HTTP POST request floods两种形式&#xff0c;第一种攻击者通过构造HTTP GET请求报文&#xff0c;向目标服务器发送针对特定资源的大量请求&#xff1b;一条HTTP请求的成本很低&#xff0c;但是目标服…

力扣(LeetCode)124. 二叉树中的最大路径和(C++)

深度优先遍历 自底向上的递归。 对于二叉树&#xff0c;我们令每个结点作为 LCALCALCA (最近公共祖先)&#xff0c; 结点 uuu 作为 LCALCALCA &#xff0c; 经过它的最大路径 往左子树的最大路径 往右子树的最大路径 它自己的路径 。 有 ansmax(ans,vulrans max(ans,v_ul…

MobPush 厂商通道SDK集成指南

开发工具&#xff1a;Android Studio 集成方式&#xff1a;Gradle在线集成 安卓版本支持&#xff1a;minSdkVersion 19 集成准备 MobPush快速集成 在使用厂商通道之前&#xff0c;请确保您已申请MobTech开发者账号并已按照MobPush快速集成文档进行集成&#xff0c;本篇文档将…

POI实现Excel导入和导出(源码测试)

因为实际开发中很多需求都需要实现Excel批量导入和导出&#xff0c;所以今天就来写一个后端demo实现Excel的导入和导出。 需求&#xff1a; Excel的导入 1对文件路径为D:\Users\Mixi\IdeaProjects\javapoi-anli\product-test.xlsx 的Excel文件导入到数据库&#xff1b; Excel的…

SAP 采购订单免费标识自动勾选的判断依据

SAP采购订单的免费标识没有专门的字段存储,是根据发票收据和项目类别计算出来的 写程序的时候折磨判断呢? 1.EKPO-REPOS <> ‘X’ AND EKPO-PSTYP <> ‘2’ AND EKPO-PSTYP <> ‘7’ &#xff0c;则系统会自动勾选上这个免费项目 2.如果要求不是很精密&…

机器学习之MATLAB代码--LSTM-SVRNN(五)

机器学习之MATLAB代码--LSTM-SVRNN&#xff08;五&#xff09;代码数据结果代码 1、cdmnn.m文件 %% 组合模型 %% %% 数据导入 clc;clear;warning off; data xlsread(nndata.xlsx, sheet1, A2:G350); load LSTMoutput load SVMoutput %% nwholelength(data); %计算数据长度…

Vue笔记_transition组件(过渡样式)

目录transition组件作用过渡时机语法1语法2使用-animation侦动画使用-过渡动画总结transition组件 作用 transition组件的作用是 给 单个 元素/组件 添加过渡效果&#xff1b; transition-group组件的作用是给 多个 元素/组件 添加过渡效果&#xff1b; 过渡时机 vue只有在…

【pen200-lab】10.11.1.13

pen200-lab 学习笔记 【pen200-lab】10.11.1.13 &#x1f525;系列专栏&#xff1a;pen200-lab &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月30日&#x1f334; &#x1f36d;作…

turtlebot2利用turtlebot_exploration_3d进行自主建图

安装octomap_ros和rviz插件 sudo apt-get install ros-indigo-octomap*源码安装&#xff1a;turtlebot_exploration_3d(本机为Ubuntu16对应的ros版本为kinetic&#xff0c;但是无对应的版本&#xff0c;用的是ubuntu14的indigo&#xff0c;版本向前兼容&#xff0c;故可以运行&…

AXWWriter兼容的Word处理元素

AXWWriter兼容的Word处理元素 AXWWriter是一个与MS Word兼容的Word处理元素。该部件不需要设置任何其他库或软件。 AXWWriter使用DOCXReadWrite一起工作,DOCXReadWriter也包含在内。有关其他属性,请查看DOCXReadWrite。AXWWriter不难使用。如果您了解DOCXReadWrite,那么您已…

岩藻多糖-聚已内酯 Fucoidan-PCL 聚已内酯-PEG-岩藻多糖

岩藻多糖-聚已内酯 Fucoidan-PCL 聚已内酯-PEG-岩藻多糖 中文名称&#xff1a;岩藻多糖-聚已内酯 英文名称&#xff1a;Fucoidan-PCL 别称&#xff1a;PCL修饰岩藻多糖&#xff0c;PCL-岩藻多糖 聚己内酯&#xff08;Polycaprolactone&#xff0c;PCL&#xff0c;CAS号…

第4部分 RIP

动态路由协议包括距离向量路由协议和链路状态路由协议。RIP&#xff08;Routing Information Protocol&#xff0c;路由信息协议&#xff09;是使用最广泛的距离微向量路由协议。RIP 是为小型网络环境设计的&#xff0c;国为这类协议是路由学习及路由更新将产生较大的流量&…

一文看懂MySQL的行锁

MySQL的全局锁和表锁可以看这篇文章&#xff1a;MySQL的全局锁和表锁 进入正文 行锁 行锁是由各个存储引擎自己实现的&#xff0c;并不是所有的引擎都支持行锁。 MyISAM引擎就不支持行锁&#xff0c;同一时刻一张表只能有一个更新在执行。 现在说InnoDB的行锁&#xff0c;行…