有条件地将RouterLink或其他属性指令添加到Angular 2中的元素

rca*_*ton 39 angular

在Angular 2中,如果我有一个元素,<button></button>我怎么能有条件地添加属性指令[routerLink]="['SomeRoute']呢?

小智 104

或者您只需向属性添加条件即可.

<button [routerLink]="myVar ? ['/myScreen'] : []"></button>
Run Code Online (Sandbox Code Playgroud)

仅当myVar为true时才重定向到'/ myScreen'.

  • 这不会删除 Angular 8 中的 href,因此这是不可接受的。 (5认同)
  • 这工作......:\`<a [routerLink] ="menuItem.isDisabled?null:menuItem.path"data-toggle ="dropdown"role ="button"aria-haspopup ="true"aria-expanded ="false "[class.disabled] ="menuItem.isDisabled"> ...... </a>` (3认同)
  • 在Angular 4中,当不需要时,会导致`/`的`href`值。 (2认同)

Boi*_*oan 23

据我所知,没有直接的方法可以做到这一点.有一些解决方法......我使用了这样的东西:

<button *ngIf="condition" [routerLink]="['SomeRoute']></button>
<button *ngIf="!condition"></button>
Run Code Online (Sandbox Code Playgroud)

这里有类似的讨论:链接

  • 如果没有路由也想显示怎么办? (2认同)

小智 8

如果您不想复制元素,而只想根据条件防止点击,您可以执行以下操作:

<button 
  [style.pointer-events]="condition ? 'auto' : 'none'" 
  routerLink="/some/route"
>
</button>
Run Code Online (Sandbox Code Playgroud)