web-dev-qa-db-fra.com

Valeur dynamique de routeurLink de l'élément ngFor donnant une erreur "Interpolation obtenue ({{}}) où l'expression était attendue"

J'essaie de définir la valeur routerLink dans une directive en fonction d'un ensemble dynamique d'éléments du composant. Mais une erreur est émise par 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>
32
BenR

Vous ne pouvez pas utiliser [] combiné avec {{}} soit le premier ou le dernier

[routerLink]="item.routerLink"

Devrait faire ce que vous voulez.

routerLink="{{item.routerLink}}"

lierait item.routerLink.toString() à la propriété routerLink.

74

Vous auriez peut-être trouvé la réponse à ce moment-là. La suppression de {{}} a résolu le même problème. Votre code pourrait être

<a *ngFor="let item of headerItems" [routerLink]="item.routerLink">
  {{item.text}}
</a>
3
madhav bitra

Vous pouvez également utiliser le code suivant pour passer une expression avec du texte.

<div *ngFor="let customer of customers">
   <a [routerLink]="'customer/'+customer.index">Link</a>
</div>
3
Manish Kumar Gupta

Quelque chose comme ça a fonctionné pour nous:

<input type="checkbox" [id]="['btn.botStepState-'+i]" [(ngModel)]="btn.botStepState" name="btn.botStepState-{{i}}" (change)="changeHandler($event)" class="cbx hidden" />
  • Liaison de propriété i.e. [] requis [] pour évaluer les valeurs
  • Modèle de liaison i.e. [()] n'exige rien de spécial
  • Interpolation i.e {{}} peut être utilisé avec des attributs généraux
  • Liaison aux événements i.e. () a très bien fonctionné avec les fonctions
0
student