首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用angular 2动态路由在页面刷新时保持选中选项卡

在使用Angular 2动态路由时,要保持选中选项卡在页面刷新时的状态,可以通过以下步骤实现:

  1. 首先,在组件中定义一个变量来保存当前选中的选项卡索引值。例如,可以在组件的类中添加一个名为selectedTabIndex的变量,并初始化为默认选项卡的索引值。
  2. 在HTML模板中,使用Angular的routerLinkActive指令来设置选项卡的样式。该指令可以根据当前路由的活动状态自动添加一个CSS类。将该指令应用于选项卡的HTML元素,并设置一个CSS类名,用于表示选中状态。
代码语言:html
复制

<ul>

代码语言:txt
复制
 <li routerLink="/tab1" routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}">
代码语言:txt
复制
   Tab 1
代码语言:txt
复制
 </li>
代码语言:txt
复制
 <li routerLink="/tab2" routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}">
代码语言:txt
复制
   Tab 2
代码语言:txt
复制
 </li>
代码语言:txt
复制
 <li routerLink="/tab3" routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}">
代码语言:txt
复制
   Tab 3
代码语言:txt
复制
 </li>

</ul>

代码语言:txt
复制
  1. 在组件的构造函数中,使用Angular的Router服务来监听路由事件。当路由发生变化时,可以通过订阅Router服务的events属性来获取路由事件。
代码语言:typescript
复制

import { Router, NavigationEnd } from '@angular/router';

constructor(private router: Router) {

代码语言:txt
复制
 this.router.events.subscribe(event => {
代码语言:txt
复制
   if (event instanceof NavigationEnd) {
代码语言:txt
复制
     // 在路由变化时更新选项卡的索引值
代码语言:txt
复制
     this.selectedTabIndex = this.getTabIndexFromUrl(event.url);
代码语言:txt
复制
   }
代码语言:txt
复制
 });

}

private getTabIndexFromUrl(url: string): number {

代码语言:txt
复制
 // 根据URL解析出选项卡的索引值
代码语言:txt
复制
 // 例如,如果URL为'/tab2',则返回1
代码语言:txt
复制
 // 如果URL为'/tab3',则返回2
代码语言:txt
复制
 // 如果URL不匹配任何选项卡,则返回默认索引值

}

代码语言:txt
复制
  1. 在组件的ngOnInit生命周期钩子函数中,根据保存的选项卡索引值,设置默认选中的选项卡。
代码语言:typescript
复制

ngOnInit() {

代码语言:txt
复制
 // 根据保存的选项卡索引值设置默认选中的选项卡
代码语言:txt
复制
 this.selectedTabIndex = this.getTabIndexFromUrl(this.router.url);

}

代码语言:txt
复制

通过以上步骤,当页面刷新时,Angular会自动根据当前路由的活动状态来设置选项卡的样式,从而保持选中选项卡的状态。同时,通过监听路由事件,可以在路由变化时更新选项卡的索引值,以便在页面刷新后正确地设置默认选中的选项卡。

对于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体品牌商,建议在腾讯云官方网站上查找相关产品和文档。腾讯云提供了丰富的云计算服务,包括云服务器、云数据库、云存储等,可以根据具体需求选择适合的产品。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Hybrid开发高级系列】AngularJS(三)——开发实践

选中了’generator-angular’后,按下回车执行安装,它所依赖的Node包就会开始被下载了。         ...(当你试用空格的效果,确保所有的模块都被标记为绿色)         好的,现在按下回车键。...中实现返回前一页 http://blog.csdn.net/qianqianyixiao1/article/details/51146519 AngularJs返回前一页面刷新一次前面页面 http:...原因分析:         controller加载,碰到登录失效,虽然要跳转到登录页,但是当前runloop周期内,还是应该继续执行剩余代码,因为事件绑定逻辑都要执行完,不然页面回退回来,就会发现事件无法响应...angule js中ng-view中使用了ng-include,如何实现ng-include的这个页面刷新,外部的ng-view不刷新 http://www.oschina.net/question/2356458

24720

『React Navigation 3x系列教程』createMaterialTopTabNavigator开发指南

如果是true,Tab 页只会在被选中或滑动到该页被渲染。...如果是,一旦该 Tab 页失去焦点,将被移出当前页面, 从而提高内存使用率。 animationEnabled : 切换页面是否有动画效果。...如果您没有选项卡的标签,建议设置此项; tabBarTestID:用于测试中找到该选项卡按钮的 ID; 【案例1】使用createMaterialTopTabNavigator做界面导航、配置navigationOptions...往往有些需求通过简单的配置是无法完成的,比如: 动态配置createMaterialTopTabNavigator:官方只提供了TabNavigator中的页面的静态配置方式,如果TabNavigator...中的页面不固定,需要动态生成那么需要怎么做呢?

12.6K20
  • Banber V2.9.3更新:弹窗、预警、全新组件不容错过

    01 蒙版弹窗及悬浮弹窗 动作属性中,新增蒙版弹窗及悬浮弹窗。 ? 蒙版弹窗——弹窗打开后,整体灰色蒙版覆盖页面(点击右上角关闭按钮或点击屏幕任意位置,可关闭弹窗) ?...02 Tab选项卡组件 原先实现网页切换,我们会用导航/切换+网页组件来实现,现在一个Tab选项卡就搞定啦,还可以自定义选项卡默认、选中、悬浮的颜色,让我们来看看他们的区别: 1....导航/切换+网页组件需要设置参数并传参,Tab选项卡组件只需选择相应的子页面; ? ? 导航/切换+网页组件设置 ? Tab选项卡组件设置 2....导航/切换+网页组件在编辑界面无法预览,Tab选项卡组件在编辑界面可以预览; ? 3. 导航/切换+网页组件点击时会刷新简报及加载字体,增加加载时间,Tab选项卡组件无须刷新,更加快速; ? 4....对于如选择器这样的多选组件,可自定义默认选中状态,选择默认第一个,或使用参数默认值。 ?

    2.1K80

    AngularDart4.0 英雄之旅-教程-07路由

    为了满足这些要求,您将添加Angular路由器到应用程序。 有关路由器的更多信息,请阅读路由和导航页面。  当你完成这个页面,应用程序应该看起来像这个实例(查看源代码)。...component(组件):此路由导航到(HeroesComponent)将被激活的组件。 路由和导航页面阅读更多关于定义路由的信息。...RouterLink指令告诉路由在用户点击链接的位置。 您使用链接参数列表定义了一个路由指令, 这个列表我们的小样本中只有一个元素,引用的路由名称。...一个真正的应用程序中,您可以使用routerCanDeactivate()挂钩来防止此问题。 CanDeactivate页面上阅读更多信息。  ...刷新浏览器并开始点击。 用户可以应用程序周围进行导航,从仪表板到英雄详细信息,然后返回,从英雄列表到英雄详细信息,再次回到英雄。 你已经达到推动这个页面的所有导航要求。

    17.6K30

    Angular 从入坑到挖坑 - Router 路由使用入门指北

    Angular 项目中,系统的路由需要我们将一个 url 地址映射到一个展示的组件,因此需要手动的去设置 url 与组件之间的映射关系 因为我们使用 Angular CLI 创建项目,选择了添加路由模组...当定义好路由信息后,我们需要在页面使用 标签来告诉 Angular 何处渲染出页面。...从截图中可以看到,当我们打开系统,会自动跳转到我们指定的 home 路径,点击菜单按钮后,则会加载对应的组件页面 4.1.4、激活的路由 很多情况下,对于被选中路由,我们可能会添加一个特定的样式来进行提示用户...4.2、路由间的参数传递 进行路由跳转,很常见的一种使用情况是我们需要将某些数据作为参数传递到下一个页面中,例如从列表中选择点击某一行数据,跳转到对应的详情页面 常见的参数传递有如下的两种方式 4.2.1...4.2.2、动态路由传递 与使用查询参数不同,使用动态路由进行参数传值,需要我们定义路由就提供参数的占位符信息,例如在下面定义路由的代码里,对于组件所需的参数 newsId,我们需要在定义路由就指明

    4.2K50

    一文让你彻底搞懂 vue-Router

    后端路由: URL 的请求地址与服务器上的资源对应,根据不同的请求地址返回不同的资源。 前端路由页面应用中,根据用户触发的事件,改变URL刷新页面的前提下,改变显示内容。...1、前端路由实现原理 URL 的 hash 模式 改变 hash 值的时候,#是一个位置标识符,可以进行页面内的位置跳转,并不会刷新页面。...通过 location.hash 改变页面的 hash 值,如: 我们发现页面并不会刷新。...next 不能丢,必须添加,否则页面跳转的时候没法到下一步,卡在空白区域。 2>、使用 router.afterEach 注册一个全局后置守卫。...// 举例来说,对于一个带有动态参数的路径 /foo/:id, /foo/1 和 /foo/2 之间跳转的时候, // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。

    72820

    教程| Angular 4 中加载功能模块(下)

    路由器导航到更新后的地址,它会使用 loadChildren 字符串动态加载 WeatherModule 或 CurrencyModule。...第一次请求某个新路径,会惰性加载该模块并重新配置应用程序路径。然后该路径立即可供后续请求使用。 更新 UI 接下来,将会更新用户界面。...单击 Network 选项卡并等待页面加载。单击 Weather 或 Currency 链接前,查看下面的图 11 (第 1 列)和图 12(第 1 列)。 图 11....现在尝试单击 Currency 菜单,查看图 11(第 2 列)和图 12(第 2 列)中的 Sources 和 Network 选项卡。...这些是必须在应用程序启动就能用的资源。 对大多数用户将要访问的模块使用预加载,即使它们不是第一个查找的或查找得最频繁的应用程序资源。 对需求不太高的模块使用惰性加载。

    2.3K10

    最近开发一个较复杂的单页应用的些许感想

    启动项目,前端只需起一个静态服务器,后端用命令行起即可。 前端负责页面输出。用了Angular.js,当然啦,路由也用的Angular提供的。后端提供接口。...这是我做的第一次做单页应用,也是第一次正式项目里用Angular,所以遇到了不少坑,记录如下 页面切换(非页面刷新,只是hash发生变化,ng-view里的内容根据路由进行更新),用jQuery抓取新页面的元素抓不到...Bootstrap 3弹出框 动态生成元素有时会出现幽灵的情况:元素生成好之后的元素,用jQuery也抓取不到那元素。。。...页面有较大改动,要改不少jQuery的选择元素的代码 后端的接口调整或出问题后导致的一些问题。 做单页应用的一些总结 尽量不要用jQuery做。用Angular来代替。...因为单页应用的页面跳转并没有刷新页面 前后端分离可采用,前后端均用相同的模板引擎。前端开发,请求的自己写的模拟的接口,而非后端真正的接口。模拟的接口和后端的接口的格式是一样的。

    43320

    浅谈HTML5单页面架构(一)——requirejs + angular + angular-route

    而在Webapp中,又要数单页面架构体验最好,更像原生app。简单来说,单页面App不需要频繁切换网页,可以局部刷新,整个加载流畅度会好很多。...一般可以把这个html放到动态服务器上,保持零缓存,同时这里可以携带各种js版本控制信息和必要的用户数据。...由于路由配置前还不存在这个controller,所以现在需要动态注册这个controller。...,跟module1不同,这里初始设置的template是空字符串,然后resolve中require回来后,动态修改$route.current.template。...不过,这里controller的函数写法可能会因为压缩混淆丢失了原来的参数名,所以,我们也可以采用显式注入的方式: //也可以使用这样的显式注入方式,angular执行controller函数前,会先读取

    3.3K20

    『React Navigation 3x系列教程』createBottomTabNavigator开发指南

    Android平台上默认使用TabBarTop。...如果您没有选项卡的标签,建议设置此项; tabBarTestID:用于测试中找到该选项卡按钮的 ID; 提示:和本文配套的还有一个React Navigation3x的视频教程,欢迎学习。...【高级案例】react-navigation的高级应用 使用react-navigation往往有些需求通过简单的配置是无法完成的,比如: 动态配置createBottomTabNavigator:...官方只提供了TabNavigator中的页面的静态配置方式,如果TabNavigator中的页面不固定,需要动态生成那么需要怎么做呢?...动态配置createBottomTabNavigator的样式:通过官方的文档是无法实现动态改变TabNavigator的样式的,比如:修改显示的文字,修改字体颜色,修改图标等等; 多层嵌套后路由个性化定制

    7.1K30

    学习 Vue 3 全家桶 - vue-router

    之后,JavaScript 获取当前的页面地址,以及当前路由匹配的组件,再去动态渲染当前页面即可。用户页面上进行点击操作,也不需要刷新页面,而是直接通过 JS 重新计算出匹配的路由渲染即可。...新架构下,前端获得了路由的控制权, JavaScript 中控制路由系统。也因此,页面跳转的时候就不需要刷新页面,网页的浏览体验也得到了提高。...通过 JavaScript 动态控制数据去提高用户体验的方式并不新奇,Ajax 让数据的获取不需要刷新页面,SPA 应用让路由跳转也不需要刷新页面。...之后,这种开发模式 MVVM 框架的时代大放异彩,现在大部分使用 Vue/React/Angular 的应用都是这种架构。...可以使用 vue-router 的导航守卫功能了,访问路由页面之前进行权限认证,这样可以做到对页面的控制。 # 动态导入 项目庞大之后,如果首屏加载文件太大,那么就可能会影响到性能。

    39710

    浅谈移动端页面刷新跳转问题的解决方案

    优点: 1.无刷新界面,给用户体验原生的应用感觉,最大的优势是使用过程的流畅。 2.节省原生(android和ios)app开发成本 3.提高发布效率,无需每次安装更新包。...5.不利于搜索引擎抓取,极差的SEO(搜索引擎优化) 6:首次加载数据大耗时长 7:独立模块编译的成本会越来越大 思想:减少页面重载和数据传输 传统的多页面应用每个页面(只说动态页面)都是使用服务器端模板编写...但在写的时候,还是会分开写(页面片段),然后交互的时候由路由程序动态载入。...,随着 ajax 的出现,页面实现非 reload 就能刷新数据,也给前端路由的出现奠定了基础。...这种方式的优点是刷新要更轻量,js库和css样式首次加载即可,局部页面可以只加载少量的数据,并且基于div响应式效果在移动端要更好。

    3.7K40

    TDesign 更新周报(2022年5月第4周)

    组件库 Vue2 for Web 发布 0.41.6 Features ColorPicker:新增颜色选择器,使用请参照 官网 Bug Fixes Table: EnhancedTable,树形结构中...,修复可选中表格禁用行勾选问题:动态设置选中,禁用失效 EnhancedTable,树形结构中,toggleExpandData 和 expandAll/FoldAll 混合使用时,树形结构展开有误...table初始化时,fixed 的阴影效果没有出现 Tabs:修复选项卡新增和删除normal风格下无效 Drawer:修复 Drawer使用按键关闭 contenteditable 出现的边框...:动态设置选中,禁用失效 Table:EnhancedTable,树形结构中,toggleExpandData 和 expandAll/FoldAll 混合使用时,树形结构展开有误 Slider:修复...setData 里传输不必要的页面实例 Sticky:修复无法获取页面实例时报错的问题 Skeleton:添加组件基础默认样式 DropdownMenu:修正遮罩层的位置,以及下拉菜单的高度 DropdownMenu

    1.7K30

    这几款基于vue3和vite的开箱即用的中后台管理模版,让你yyds!

    使用了最新的 vue3, vite2, TypeScript 等主流技术开发,开箱即用的中后台前端解决方案,也可用于学习参考。...数据方案 权限 内置完善的动态路由权限生成方案 组件 二次封装了多个常用的组件 界面展示 大家可以左右滑动来切换图片:) 2. ant-simple-pro image.png ant-simple-pro...是一款支持 vue3.0,react,angular,typescript 等多框架支持的中台前端解决方案,ui 使用 antd 实现的,它使用了最新的前端技术栈,内置了 i18 国际化解决方案,动态路由...noCache属性,无需配置其他的任何属性,如组件名称,路由名称等等很多框架需要配置的东西 典型增删改查的三种业务表格,详情请查看“页面栏目”内的“业务表格”、“分类联动表格”、“树联动表格” 支持缓存页面刷新...,目前了解的多数框架都不支持缓存页面刷新方便扩展的国际化解决方案,并提供了两套非国际化的基础模板和两套国际化的基础模板(ts版本/js版本) 手写版本的各类自定义指令 已经过多个中后台业务检验过的表格公用组件及弹窗公用组件

    4.4K20

    【Flutter】StatefulWidget 组件 ( FloatingActionButton 组件 | RefreshIndicator 组件 )

    回调该方法 ; 异步方法 , 方法体前添加 async 关键字 ; 该方法的主要作用是暂停 500 ms , 然后返回空 ; /// RefreshIndicator 发生下拉操作, 回调该方法...ms , 使用 await 关键字实现 // 在这 500 ms 之间 , 列表处于刷新状态 // 500 ms 之后 , 列表变为非刷新状态 await Future.delayed...列表组件 , 然后设置了下拉刷新回调方法 , onRefresh 字段设置 ; // 刷新指示器组件 RefreshIndicator( //...// 刷新回调的方法 // 列表发生下拉操作, 回调该方法 // 该回调是 Future 类型的 onRefresh: _refreshIndicatorOnRefresh...// 刷新回调的方法 // 列表发生下拉操作, 回调该方法 // 该回调是 Future 类型的 onRefresh: _refreshIndicatorOnRefresh

    2.7K00

    如何使用WijmoJS 纯前端设计器,快速生成 Angular 应用

    WijmoJS VSCode Designer还提供了一个独立的命令,可以单独的选项卡中打开设计图面,您可以在其中使用示例数据实例化控件,自定义其属性,并生成可以复制到源文件中的Angular标记。...如果您已经下载了WijmoJS,则可以Samples \ TS \ Angular2 \ HeaderFilters \ HeaderFilters文件夹中找到此项目。...我们的示例中,操作是单独的选项卡中打开设计图面,并使用 Angular标记提供的上下文,以及源文件中该标记的位置。 现在单击链接以相邻选项卡中打开设计器。...保存后,WijmoJS VSCode Designer选项卡仍然存在,如果您给它焦点,它将保持其先前状态。但是,您应该知道扩展会记住调用它的Angular标记的文档范围。...如果随后修改了原始源文件,则应重新访问CodeLens链接以刷新关联的设计器选项卡。 否则,如果您只是切换到设计器选项卡并单击“保存”,则更新可能发生在错误的位置。

    5.4K40

    hash和history路由模式

    其实就是说,我们点击页面上的一些东西,并没有真正的发送请求进行页面跳转,而是组件之间切换而已,仅仅刷新局部资源。...、CSS 统一加载,部分页面按需加载 SEO 难度较大:由于所有的内容都在一个页面动态替换显示,所以 SEO 上其有着天然的弱势。...SPA可以监听hashchange事件,URL的hash部分变化时根据定义好的路由映射关系来动态渲染内容。...hash 模式:只将 hash 前面的部分当作地址 history 模式:会将地址栏中的地址全部看作请求地址 hash模式的优缺 兼容低版本浏览器,Angular1.x和Vue默认使用的就是hash路由...后来慢慢就出现了单页应用,第一次访问,就把 html 文件,以及其他静态资源都请求到了客户端。之后的操作,只是利用 js 实现组件的展示和隐藏。除非需要刷新数据,才会利用 ajax 去请求。

    19510

    如何在 ASP.NET MVC 中集成 AngularJS(1)

    当选择最新的软件技术,有几个因素起作用,其中包括如何将这些技术整合起来。过去两年中,我最喜欢的一项技术就是设计单页面应用(SPA)的 AngularJS。...使用 RequireJS 来实现 MVC 捆绑的动态加载 开发 AngularJS 单页的应用程序时,其中有一件事情是不确定的。...CustomerInquiry 一样的页面 /Views/Customers/ CustomerInquiry  当你 HTML 页面寻找这个视图,点击 Visual Studio 中的运行按钮来直接执行这个页面...就 Angular 和单页面如何运行而言,当你点击 F5 ,基本上就是重启了 AngularJS 应用。 有了这些额外的路由,现在就可以直接执行 AngularJS 路由了。...你需要做的是使用 $controllerProvider 服务器配置阶段之后,动态地加载控制器。Angular 使用 $controllerProvider 服务来创建新的控制器。

    7.6K60
    领券