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

Angular2+需要可选参数的routerLinkActive类型解决方案

Angular2+中的routerLinkActive是一个指令,用于在当前活动路由和指定链接之间添加活动CSS类。它可以帮助我们在用户导航时为当前活动的链接添加样式。

在Angular2+中,routerLinkActive指令有一个可选参数,可以用来指定活动CSS类的名称。如果我们需要为routerLinkActive指定可选参数类型的解决方案,可以通过以下步骤实现:

  1. 创建一个自定义指令,用于扩展routerLinkActive指令并添加可选参数。可以使用Angular的@Directive装饰器来定义这个指令。
代码语言:typescript
复制
import { Directive, Input, OnChanges, SimpleChanges, HostBinding } from '@angular/core';
import { RouterLinkActive } from '@angular/router';

@Directive({
  selector: '[optionalRouterLinkActive]',
})
export class OptionalRouterLinkActiveDirective extends RouterLinkActive implements OnChanges {
  @Input() optionalRouterLinkActive: string;

  @HostBinding('class')
  get isActive(): string {
    return this.router.isActive(this.links, this.optionalRouterLinkActive) ? this.optionalRouterLinkActive : '';
  }

  ngOnChanges(changes: SimpleChanges): void {
    if ('optionalRouterLinkActive' in changes) {
      this.links = this.routerLink;
      this.classes = this.optionalRouterLinkActive;
    }
    super.ngOnChanges(changes);
  }
}
  1. 在模板中使用自定义指令,并传入可选参数。
代码语言:html
复制
<a routerLink="/home" optionalRouterLinkActive="active">Home</a>
<a routerLink="/about" optionalRouterLinkActive="active">About</a>

在上面的例子中,我们创建了一个名为OptionalRouterLinkActiveDirective的自定义指令,它继承自Angular的RouterLinkActive指令。我们添加了一个名为optionalRouterLinkActive的可选参数,并在isActive属性中使用它来判断是否应该添加活动CSS类。

这样,当用户导航到"/home"或"/about"时,对应的链接将具有名为"active"的CSS类。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)、腾讯云云数据库MySQL、腾讯云CDN加速等。你可以在腾讯云官网上找到这些产品的详细介绍和文档。

腾讯云官网链接:https://cloud.tencent.com/

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

相关·内容

【C++】函数 指针类型参数 与 引用类型参数 对比 ( 修改外部变量需要传入的参数要求 | 参数作返回值 )

讨论问题 : 本章只针对一点进行讨论 , 那就是对两种类型的参数修改 , 是否影响到外部的变量 ; 传入什么样的参数才能修改外部变量 , 即 参数当返回值使用 ; 2 ....参数使用语言环境 : 引用类型参数只能在 C++ 环境中使用 , 指针类型参数可以用于 C / C++ 两种语言环境中 , 因此很多基础库 如 FFMPEG , OpenSL ES 等使用的都是指针类型参数...指针作为参数和返回值 ---- 指针作为参数和返回值 : 如果是指针作为参数 , 修改 N 维指针指向的地址 , 那么需要传入 N + 1 维指针 , 传入指向该 N 维指针 的指针参数 ( N + 1...C++ 中的引用参数 : C++ 在 C 语言基础上扩展了 引用 数据类型 , 使用引用可以替代上面的指针作为参数的情况 , 使参数具有返回结果的能力 ; 3 ....引用作为参数和返回值 ---- 引用作为参数和返回值 : 如果是引用作为参数 , 修改 N 维指针指向的地址 , 那么需要传入 N 维指针的引用即可 ,在函数中修改该引用 , 即可修改外部的被引用的变量

2.2K20

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

、query 查询参数传递 最常见的一种参数传递的方式,在需要跳转的路由地址后面加上参数和对应的值,在跳转后的页面通过获取参数 key 从而获取到对应的参数值 的查询参数,我们需要定义一个 NavigationExtras 类型的变量来进行设置 import { Component, OnInit } from '@angular/core';...,在跳转后的页面我们肯定需要获取到传递的参数值。...4.2.2、动态路由传递 与使用查询参数不同,使用动态路由进行参数传值时,需要我们在定义路由时就提供参数的占位符信息,例如在下面定义路由的代码里,对于组件所需的参数 newsId,我们需要在定义路由时就指明...,需要依赖注入 ActivatedRoute 类,因为是采用的动态路由的方式进行的参数传递,这里需要通过 paramMap 属性获取到对应的参数值 import { Component, OnInit

4.2K50
  • Angular路由

    可以接受一个数组,来动态的改变url的值,以便我们传递特定的Url信息 2.2 routerLinkActive 实际开发中我们可能需要以下的场景就是,我们要知道当前页面激活的是哪一个路由。...图一 我们需要以下操作 routerLinkActive="active">路由与导航 2.3 Router API 实际项目中我们可能希望自己通过...js来后台控制跳转 // 我们需要把Router这个对象注入组件中,通过这个对象进行跳转 explort class Acomponent{     constructor(         private...图二 后台通过逻辑来进行跳转 注意:如果在Acomponent组件中使用navicate,如果利用jumpTomanger改变参数跳转当前页面,浏览器中的url和参数都不会改变,但是这个路由对象确实变化了...,我们可以通过ActivatedRoute这个对象监听到变化 原因:navicate 是基于参数来改变组件视图 2.3.2 navigateByUrl() navicateByUrl()和navicate

    1.3K50

    Angular、React、Vue.js 等 6 大主流 Web 框架都有什么优缺点?

    需要注意的是 Angular1(angular.js)与 Angular2+ 是截然不同的,其中的应用、技术和经验不能直接移植到 Angular2+ 的开发中去。...如果你的 Web 应用能够很好的转化为标准的模型-视图模式,那么你也可以忽略其他直接考虑使用 Angular2+ 。...要构建一个功能丰富的 Web 应用程序,你需要许多功能,一旦脱离 React 和 Redux 和其他一些库的核心,你将发现一个非常分散的社区,拥有无数的解决方案和模式,不容易整合在一起。...在模型-视图应用程序和状态容器类型的应用程序之间的互相转换可能会令人感到困惑,即使没有完美包含一个模式到另一个模式的完美转换,但让人感觉希望能维持两个模式的相关性。...对于那些期待 vue.js 完美解决方案,并可能导致难以维护不一致的应用程序的人来说,这至少是令人困惑的。

    2.4K50

    Angular、React、Vue等 6 大主流 Web 框架都有什么优缺点?

    需要注意的是 Angular1(angular.js)与 Angular2+ 是截然不同的,其中的应用、技术和经验不能直接移植到 Angular2+ 的开发中去。...如果你的 web 应用能够很好的转化为标准的模型-视图模式,那么你也可以忽略其他直接考虑使用 Angular2+ 。...要构建一个功能丰富的 Web 应用程序,你需要许多功能,一旦脱离 React 和 Redux 和其他一些库的核心,你将发现一个非常分散的社区,拥有无数的解决方案和模式,不容易整合在一起。...在模型-视图应用程序和状态容器类型的应用程序之间的互相转换可能会令人感到困惑,即使没有完美包含一个模式到另一个模式的完美转换,但让人感觉希望能维持两个模式的相关性。...对于那些期待 vue.js 完美解决方案,并可能导致难以维护不一致的应用程序的人来说,这至少是令人困惑的。

    2.3K60

    基础| 六大主流框架怎么选?这里告诉你!

    需要注意的是 Angular1(angular.js)与 Angular2+ 是截然不同的,其中的应用、技术和经验不能直接移植到 Angular2+ 的开发中去。...如果你的 web 应用能够很好的转化为标准的模型-视图模式,那么你也可以忽略其他直接考虑使用 Angular2+ 。...要构建一个功能丰富的 Web 应用程序,你需要许多功能,一旦脱离 React 和 Redux 和其他一些库的核心,你将发现一个非常分散的社区,拥有无数的解决方案和模式,不容易整合在一起。...在模型-视图应用程序和状态容器类型的应用程序之间的互相转换可能会令人感到困惑,即使没有完美包含一个模式到另一个模式的完美转换,但让人感觉希望能维持两个模式的相关性。...对于那些期待 vue.js 完美解决方案,并可能导致难以维护不一致的应用程序的人来说,这至少是令人困惑的。

    1.1K10

    6 大主流 Web 框架优缺点对比

    需要注意的是 Angular1(angular.js)与 Angular2+ 是截然不同的,其中的应用、技术和经验不能直接移植到 Angular2+ 的开发中去。...如果你的 web 应用能够很好的转化为标准的模型-视图模式,那么你也可以忽略其他直接考虑使用 Angular2+ 。...要构建一个功能丰富的 Web 应用程序,你需要许多功能,一旦脱离 React 和 Redux 和其他一些库的核心,你将发现一个非常分散的社区,拥有无数的解决方案和模式,不容易整合在一起。...在模型-视图应用程序和状态容器类型的应用程序之间的互相转换可能会令人感到困惑,即使没有完美包含一个模式到另一个模式的完美转换,但让人感觉希望能维持两个模式的相关性。...对于那些期待 vue.js 完美解决方案,并可能导致难以维护不一致的应用程序的人来说,这至少是令人困惑的。

    1.5K00

    Angular、React、Vue.js等6 大主流 Web 框架都有什么优缺点?

    需要注意的是 Angular1(angular.js)与 Angular2+ 是截然不同的,其中的应用、技术和经验不能直接移植到 Angular2+ 的开发中去。...如果你的 Web 应用能够很好的转化为标准的模型-视图模式,那么你也可以忽略其他直接考虑使用 Angular2+ 。...要构建一个功能丰富的 Web 应用程序,你需要许多功能,一旦脱离 React 和 Redux 和其他一些库的核心,你将发现一个非常分散的社区,拥有无数的解决方案和模式,不容易整合在一起。...在模型-视图应用程序和状态容器类型的应用程序之间的互相转换可能会令人感到困惑,即使没有完美包含一个模式到另一个模式的完美转换,但让人感觉希望能维持两个模式的相关性。...对于那些期待 vue.js 完美解决方案,并可能导致难以维护不一致的应用程序的人来说,这至少是令人困惑的。

    2.9K00

    6 大主流 Web 框架优缺点对比

    需要注意的是 Angular1(angular.js)与 Angular2+ 是截然不同的,其中的应用、技术和经验不能直接移植到 Angular2+ 的开发中去。...如果你的 web 应用能够很好的转化为标准的模型-视图模式,那么你也可以忽略其他直接考虑使用 Angular2+ 。...要构建一个功能丰富的 Web 应用程序,你需要许多功能,一旦脱离 React 和 Redux 和其他一些库的核心,你将发现一个非常分散的社区,拥有无数的解决方案和模式,不容易整合在一起。...在模型-视图应用程序和状态容器类型的应用程序之间的互相转换可能会令人感到困惑,即使没有完美包含一个模式到另一个模式的完美转换,但让人感觉希望能维持两个模式的相关性。...对于那些期待 vue.js 完美解决方案,并可能导致难以维护不一致的应用程序的人来说,这至少是令人困惑的。

    2.2K20

    浅谈Hooks&&生命周期(2019-03-12)

    在[ngAfterContentInit()](https://angular.io/api/router/RouterLinkActive#ngAfterContentInit)随后和随后的每一次调用之后...this.fetchList(); } fetchList() {} render() { return demo page; } } 我们都知道,在react中,有两种类型的组件...React 不知道你把 useState 等 Hooks API 返回的结果赋值给什么变量,但是它也不需要知道,它只需要按照 useState 调用顺序记录就好了。...useEffect 还支持第二个可选参数,只有同一 useEffect 的两次调用第二个参数不同时,第一个函数参数才会被调用....首先我们可能不再需要 class了,虽然 React 官方表示 class 类型的组件将继续支持,但是,业界已经普遍表示会迁移到 Hooks 写法上,也就是放弃 class,只用函数形式来编写组件。

    3.3K40

    Angular 从入坑到挖坑 - 路由守卫连连看

    ,这里包含了对于路由的重定向、通配路由,以及通过动态路由进行参数传递的使用 import { NgModule } from '@angular/core'; import { Routes, RouterModule...,对于 CanDeactivate 守卫来说,我们需要将参数中的 unknown 替换成我们实际需要进行路由守卫的组件 import { Injectable } from '@angular/core...HeroListComponent 这个组件,因此我们需要将泛型的参数 unknown 改为 HeroListComponent,通过 component 参数,就可以获得需要进行路由守卫的组件的相关信息...Angular CLI 创建一个危机中心模块(crisis 模块) -- 查看创建模块的相关参数 ng g module --help -- 创建危机中心模块(自动在 app.moudule.ts...这里的问题与配置通配路由需要放到最后的原因相似,因为脚手架在帮我们将创建的模块导入到 app.module.ts 中时,是添加到整个数组的最后,同时因为我们已经将 crisis 模块的路由配置移动到专门的

    3.8K30

    JS 数组中 reduce 方法详解

    累加器参数 累加器参数说明 total 必需。初始值, 或者计算结束后的返回值。 currentValue 必需。当前元素 currentIndex 可选。当前元素的索引 arr 可选。...当前元素所属的数组对象。 累加器参数 累加器参数说明 total 必需。初始值, 或者计算结束后的返回值。 currentValue 必需。当前元素 currentIndex 可选。...,完成最简单的总和的实现 ② 返回对象 reduce 函数的返回结果类型和传入的初始值相同,上个实例中初始值为 number 类型,同理,初始值也可为 object 类型 var items = [10...: 0},则需要相应的逻辑进行处理 在下面的方法中,采用分而治之的方法,即将 reduce 函数第一个参数 callback 封装为一个数组,由数组中的每一个函数单独进行叠加并完成 reduce 操作。...,它需要 reducers 对象作为参数,并返回一个 callback 类型的函数,作为 reduce 的第一个参数。

    6.7K40

    一些实用的编程模式 | Options模式

    但是如果可选的参数是十几个,各个调用方对可选参数的顺序要求不一样的话,定义这个多重载方法显然不是一个好的解决方案。...另外一种常用的解决方案是,工具函数的签名定义时,不再定义各个可能需要配置的可选参数,转而定义一个配置对象。...配置对象方案的问题 函数签名里通过传递一个配置对象来聚合各种可能的可选参数这个方案,对调用者来说,比上一种方法看起来简洁了不少,如果全都是默认选项只需要给配置对象这个参数传递一个零值即可。...虽然参数是可变的,但是实现方需要通过遍历设置HTTP客户端的不同选项,这就让可变参数固定了传递顺序,调用方如果想要设置某个可选项还得记住参数顺序,切无法直接通过函数签名就确定参数顺序,貌似还不如咱们最原始的解决方案...如果后面要给配置对象里增加其他配置项,只需要扩充类型的字段,在定义一个对应的With方法即可,扩展性完全在可接受范围内。

    58410

    【超详细】Zod 入门教程

    (num: unknow) => { return String(num)}我们将 num 的入参设置为 unknow这意味着我们可以在编码过程中给 toString 函数传递任何类型的参数,包括...eye_color,skin_color 等等一些我们不感兴趣的内容接下来我们需要修复这个 PersonResult 的 unknown 类型解决方案使用 z.object 来修改 PersonResult...,如果需要的话05 - 让 schema 变成可选的===================问题--Zod 在前端项目中也同样是有用的在这个例子中,我们有一个函数叫做 validateFormInput这里...name,email 字段还有可选的 phoneNumber 和 website 字段然而,我们现在想对一些值做强约束需要限制用户不能输入不合法的 URL 以及电话号码作业你的任务是寻找 Zod 的...API 来为表单类型做校验电话号码需要是合适的字符,邮箱地址和 URL 也需要正确的格式解决方案Zod 文档的字符串章节包含了一些校验的例子,这些可以帮助我们顺利通过测试现在我们的 Form 表单 schema

    90210

    从java到JavaScript(2):对比JavaGoSwiftRust看Dart

    booleans类型是bool,只包含true和false。这两个对象也是编译时常量。当Dart需要一个布尔值的时候,只有true对象才被认为true,其他都是false。...方法Dart是一个真正面向对象的语言,方法也是对象并且具有一种类型Function。可以使用上文说的可选方法。支持直接设置默认参数值。...具体参考APImap对应java里面的Map,他的操作方式有点像Python。需要注意的有几点。...函数Dart的函数比java多了几个概念。比如在参数列表里面添加个大括号,是可选命名参数;加个中括号叫可选位置参数。...可选命名参数类似Python里面的**kwargs可选位置参数类似Python里面的*args可选命名参数和可选位置参数可以有默认值,普通参数不能有函数之间可以互相嵌套,互相调用,但他们都有自己作用域。

    94910

    iPhone 15 系列跌破 5000 元大关 | Swift 周报 issue 46

    目前,当在字符串中插入可选值时,开发人员面临警告和提供默认值的选项有限的问题。 所提出的解决方案建议引入新的字符串插值重载,该重载允许开发人员指定默认字符串,而不管可选值的类型如何。...介绍Pitch 建议在插入可选值时使用新的默认值字符串插入语法。动机字符串插值很强大,但在处理可选值时会变得复杂。当前的解决方案在处理可选值时涉及繁琐的代码或不需要的输出。...例子演示插入可选字符串和可选整数时的挑战。当前的解决方案涉及笨拙的代码或零合并运算符的限制。建议的解决方案引入新的插值重载,允许将预期默认值指定为字符串,而不管值的类型如何。...回答从技术上讲,传入的不是一个框,它“只是”一个指针,类型作为单独的参数传递。 这对于值已经在堆栈或堆上的情况很有帮助。...核心概念与联系部分深入解释了集成前需要了解的核心概念,包括 Elasticsearch 的索引、查询、分词、词典等原理,以及 Swift 的类型安全、自动引用计数、高性能等特点。

    14832

    C#学习笔记七: C#4.0中微小改动-可选参数,泛型的可变性

    主要内容有: 可选参数和命名实参, 泛型的可变性, 动态类型 1,可选参数和命名实参 1.1可选参数 可选参数和命名实参就如同一对好基友, 因为它们经常一起使用....这里的解决方案就是仍然使用同一个Check方法,但是给这个Check方法新添加一个可选参数来判断到底是执行的哪个操作, 然后根据不同的操作去做相应的修改....在使用可选参数时, 需要注意一下几个约束条件: (1)所有可选参数必须位于必选参数之后. (2)可选参数的默认值必须为常亮. (3)参数数组(有params修饰符声明)不能做为可选参数 (4)用ref或...out关键字标识的参数不能被设置为可选参数 看到这里我们就可以发现可选参数的最大的优点就是便于系统后期的维护....其他的优点还有待发现. 1.2命名实参 如果一个系统中有两个可选参数, 而我们想省略掉第一个可选参数怎么办呢?

    1.4K80
    领券