【问题标题】:How to style routerLink DOM element based on guard response如何根据保护响应设置 routerLink DOM 元素的样式
【发布时间】:2019-01-03 21:45:43
【问题描述】:

我想知道是否有一个像 routerLinkActive 一样工作的原生 Angular 指令,但会根据分配的保护检查路由是否可以激活。

为了澄清说我定义了以下路线:

{ path: '1', component: RouteOneComponent, canActivate: [RouteOneGuard] }

还有一些看起来像这样的 HTML:

<p [routerLink]="['1']" routerLinkActive="active">The Link</p>

当 RouteOneGuard 返回 true 时,我可以使用一个指令来应用“启用”的 css 类吗?比如:

<p [routerLink]="['1']" routerLinkActive="active" canActivate="enabled">The Link</p>

或者我必须为此创建一个自定义指令吗?

【问题讨论】:

    标签: angular


    【解决方案1】:

    模板:

    <a
      [routerLink]="['1']"
      routerLinkActive="active"
      [ngClass]="{'link-disabled': isNotAllowed}">
      The Link
    </a>
    

    组件

    get isNotAllowed(): boolean {
      return this.permissionService.isUserHasSomePermission(); // or canActivate method used in routes
    }
    

    样式

    .link-disabled {
      pointer-events: none;
      opacity: 0.5;
    }
    

    【讨论】:

    • 感谢您的回复 :) 澄清一下,我知道 ngClass 可以与来自控制器的标准布尔值一起使用,以将类应用于 DOM 元素。我特别想知道是否有类似routerLinkActive的东西。内置的 Angular 指令 routerLinkActive 会自动检查分配给 DOM 元素的 routerLink 是否与您所在的当前路由相比较,以将类应用于该 DOM 元素。我正在寻找类似的东西,但不是检查当前路线,而是检查路线的 canActivate 属性的状态。
    猜你喜欢
    • 2018-04-04
    • 2017-06-10
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    • 2015-09-13
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多