angular - 来自 ngFor 项目的动态 routerLink 值给出错误 "Got interpolation ({{}}) where expression was expected"

标签 angular angular2-directives

我正在尝试根据组件中的一组动态项在指令中设置 routerLink 值。但是 Angular2 抛出了一个错误:

EXCEPTION: Template parse errors:
Parser Error: Got interpolation ({{}}) where expression was expected at column 1 in [ {{item.routerLink}} ] in AppHeader@5:40 ("
    <a *ngFor="let item of headerItems" [ERROR ->][routerLink]=" {{item.routerLink}} ">
      {{item.text}}
    </a>
"): Header@5:40

header.component.ts

import {Component} from '@angular/core';
import {ROUTER_DIRECTIVES} from '@angular/router-deprecated';

@Component({
  selector: 'app-header',
  templateUrl: './app/components/header/header.component.html',
  directives: [ROUTER_DIRECTIVES]
})
export class AppHeader {
  headerItems: Object[] = [];

  constructor() {
    this.headerItems.push(
      { classes: 'navLink', routerLink: ['/Home'], text: 'Home' }
    );
  }
}

header.component.html

<div id="HeaderRegion">
  <nav class="nav">
    <a *ngFor="let item of headerItems" [routerLink]=" {{item.routerLink}} ">
      {{item.text}}
    </a>
  </nav>
</div>

最佳答案

您不能将 []{{}} 结合使用,无论是前者还是后者

[routerLink]="item.routerLink"

应该做你想做的。

routerLink="{{item.routerLink}}"

会将 item.routerLink.toString() 绑定(bind)到 routerLink 属性。

关于angular - 来自 ngFor 项目的动态 routerLink 值给出错误 "Got interpolation ({{}}) where expression was expected",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37078494/

相关文章:

angular - 如何使模态在 Ionic2 中变为全屏?

javascript - 在指令中使用异步进行 Angular Select

Angular 2 - 使用 ngStyle 将背景图像转换为 html 文件

angular - 获取对组件中使用的指令的引用

angular - 在angular2中访问任意 child

angular - 在带有 *ngFor 的 Angular 2 模板中使用可观察对象

css - 将 Angular Material 表中的一个 mat-h​​eader-cell 与排序标题右对齐

typescript - ngOnChange 不存储 previousValue 属性

Angular 2+ 组件很好地扩展了组件,但是 tslint 提示继承的生命周期钩子(Hook)

angular - 子目录中的 Laravel