2016-05-28 30 views
15

Sto tentando di impostare un attributo su un componente se una determinata espressione è vera. Qualcuno potrebbe darmi un esempio?Imposta dinamicamente l'attributo sul componente in template html angolare 2

Quello che ho adesso:

<div [danger]="inArray(choice.likers, user, id)"></div> 

ma questo non viene compilato.

inArray è il mio metodo che restituisce vero o falso. Quello che vorrei vedere è, se l'espressione restituisce true, l'uscita sarà

<div danger></div> 

In angolare 1 c'era questa: NG-attr -... dichiarazione che ha fatto esattamente quanto sopra.

risposta

31

Per impostare un attributo utilizzare attributo vincolante:

<div [attr.danger]="inArray(choice.likers, user, id)"></div> 

Se si desidera visualizzare un attributo vuoto condizionalmente tornare stringa vuota o null in inArray():

inArray() { 
    let value; 
    if (isInArray) { 
     value = ''; 
    } else { 
     value = null; 
    } 
    return value; 
    } 

così l'attributo si svuota o l'attributo di pericolo non esiste. Il risultato è:

<div danger></div> 
+1

Grazie per il tuo commento muetzerich. Questo codice mi consente di impostare il valore dell'attributo in modo dinamico, ma ciò che vorrei ottenere è impostare l'attributo stesso. – Bram

+0

Per chiarire: l'output con il tuo codice è: danger = "true", ma mi piacerebbe solo impostare l'attributo non dargli un valore. – Bram

+0

prova questo [attr.danger] = "inArray (choice.likers, user, id)? True: null" -> null rimuovi l'attributo di pericolo – muetzerich