在Angular中的属性指令中设置href

cob*_*nks 23 angular

我正在尝试使用Angular 2设置一个Bootstrap标签条.我有一个标签渲染,ngFor但是当我尝试放置表达式的#前面时,我遇到了模板错误href.所以这个模板编译但不是我想要的:

<ul class="nav nav-tabs" role="tablist">
  <li *ngFor="let aType of resourceTypes; let i = index"
      [ngClass]="{'active': i == 0}"
      role="presentation">
    <a [attr.href]="aType.Name"
       [attr.aria-controls]="aType.Name"
       role="tab"
       data-toggle="tab">
      {{aType.Name}}
    </a>
  </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我想做的[attr.href]="#aType.Name" 就是爆炸.#在属性指令中预先添加表达式前面的正确语法是什么?

Gün*_*uer 42

没有必要加前缀 #

在这段代码中

<ul class="nav nav-tabs" role="tablist">
  <li *ngFor="let aType of resourceTypes; let i = index"
      [ngClass]="{'active': i == 0}"
      role="presentation">
    <a [attr.href]="aType.Name"
       [attr.aria-controls]="aType.Name"
       role="tab"
       data-toggle="tab">
      {{aType.Name}}
    </a>
  </li>
Run Code Online (Sandbox Code Playgroud)

aType已经指的是*ngFor变量.

如果你想为文字添加前缀,#你可以使用

[attr.href]="'#' + aType.Name" 
Run Code Online (Sandbox Code Playgroud)

attr.如果元素实际上具有属性href,则也不需要<a>.

  • 一旦使用`[attr.href]`vs` [href]`的区别是前者在值为null时不会绑定 - 这对我来说很方便,因为我希望锚点被禁用如果一个url属性我是没有设置绑定. (8认同)

rin*_*usu 12

那你可以用字符串插值绑定它:

href = "#{{aType.Name}}" 
Run Code Online (Sandbox Code Playgroud)

(注意,这里使用的属性href不是[attr.href].)

  • @chovy你不应该混合属性和对象绑定.只需删除"地址"周围的那些大括号即可. (2认同)