5

sto usando angular2 e i'im dati vincolanti da un servizio, il problema è quando sto caricando i dati dovrei filtrarlo con un id, questo è quello dovrei fare:Non posso usare * ngIF dentro * ngPer: angular2

<md-radio-button 
     *ngFor="#item of items_list" 
     *ngIf="item.id=1" 
     value="{{item.value}}" class="{{item.class}}" checked="{{item.checked}}"> {{item.label}} 
</md-radio-button> 

e questo è il dato:

[ 
    { "id": 1, "value": "Fenêtre" ,"class":"md-primary" ,"label":"Fenêtre" ,"checked":"true"}, 
    { "id": 2, "value": "Porte Fenêtre" ,"class":"" ,"label":"Porte Fenêtre" } 

] 

dal modo in cui voglio solo i dati con id = 1 ammessi, ma io sto vedendo questo errore :

EXCEPTION: Template parse errors: 
Parser Error: Bindings cannot contain assignments at column 14 in [ngIf item.id=1] in [email protected]:16 (" 
     <md-radio-button 
       *ngFor="#item of items_list" 
       [ERROR ->]*ngIf="item.id=1" 
       value="{{item.value}}" class="{{item.class}}" checked="{{item.check"): [email protected]:16 

quindi qualche suggerimento di usare ngif e ngfor insieme?

+0

Semplicemente, ancora più semplice rispetto alle risposte: filtrare i dati nel vostro componenti e si passa a la vista, non è affatto necessario farlo nella vista. –

risposta

7

È possibile utilizzare il seguente:

*ngIf="item.id===1" 

invece di

*ngIf="item.id=1" 

si tenta di assegnare qualcosa nella id proprietà (operatore =) invece di testare il suo valore (operatore == o ===) .

Inoltre, sia ngFor che ngIf sullo stesso elemento non sono supportati. Si potrebbe provare qualcosa di simile:

<div *ngFor="#item of items_list"> 
    <md-radio-button 
     *ngIf="item.id===1" 
     value="{{item.value}}" class="{{item.class}}" 
     checked="{{item.checked}}"> 
    {{item.label}} 
    </md-radio-button> 
</div> 

o

<template ngFor #item [ngForOf]="items_list"> 
    <md-radio-button 
     *ngIf="item.id===1" 
     value="{{item.value}}" class="{{item.class}}" 
     checked="{{item.checked}}"> 
    {{item.label}} 
    </md-radio-button> 
</template> 
+0

grazie ma il problema persiste ECCEZIONE: TypeError: impossibile leggere la proprietà 'id' di undefined in [item.id === 1 in RadioFormesType1Component @ 11: 16] – firasKoubaa

+0

In effetti è necessario creare un sub-elemento per applicare 'ngIf' . Sia 'ngFor' che' ngIf' sullo stesso elemento non sono supportati ... –

3

*ngIf e *ngFor sullo stesso tag non sono supportati. È necessario utilizzare il modulo lungo con un tag esplicito <template> per uno di essi.

aggiornamento

Invece di <template> uso <ng-container> che permette di utilizzare la stessa sintassi linea *ngIf e *ngFor

+0

sì la soluzione migliore è utilizzare