2017-09-28 1 views
0

Ich versuche, die Hintergrundfarbe eines Elements an eine Funktion zu binden:Property Bindung an Funktion

<td [style.background-color]="patientService.getSeverityColor(interval.averageSeverity)">{{interval.earliestTime}}-{{interval.latestTime}}</td> 

Das hat funktioniert, aber es funktioniert nicht mehr und ich bin nicht warum. Soll ich sogar Eigenschaften an Funktionen binden, oder sollte ich das nur mit Komponenteneigenschaften tun?

Der Grund, warum ich tue, ist, dass interval.averageSeverity eine Zahl, die eine bestimmte Farbe darstellt, so dass ich das Bestehen der Nummer an die Funktion und es gibt die Farbe:

getSeverityColor(severity: number) { 
switch (severity) { 
    case -1: 
    return "grey"; 
    case 0: 
    return "green"; 

    case 1: 
    return "yellow"; 

    case 2: 
    return "orange"; 

    case 3: 
    return "red"; 

} 
} 

Wenn i Kann ich nicht an eine Funktion binden, haben Sie Vorschläge, wie ich das lösen könnte? Vielen Dank.

EDIT, mehr Code:

<div class="patients-container" (dragover)="allowDrop($event)" (drop)="onDrop($event)"> 
    <div class="patient-box level-1" draggable="true" *ngFor="let bed of beds" (dragstart)="onDrag($event, bed)"> 
    <div class="location-header"> 
     <p class="location" (click)="openEditPatientDialog(bed)">{{bed.philipsName}}<md-icon>edit</md-icon></p> 
     <p class="name" [hidden]="bed.patientName == ''">{{bed.patientName}}</p> 
     <p class="O2" [hidden]="!additionalO2"><img (click)="toggleO2()" src="../../assets/med_O2.png"></p> 
     <p class="O2" [hidden]="additionalO2"><img (click)="toggleO2()" src="../../assets/no_O2.png"></p> 
     <p class="triage"><md-icon [style.color]="patientService.getSeverityColor(bed.absoluteSeverity)">favorite</md-icon></p> 
    </div> 
    <div class="intervals-header"> 
     <table> 
     <tr *ngFor="let interval of bed.timeWindows"> 
      <td [ngStyle]="{'background-color': patientService.getSeverityColor(interval.averageSeverity)}">{{interval.earliestTime}}-{{interval.latestTime}}</td> 
     </tr> 
     </table> 
    </div> 
    </div> 
</div> 
+0

was ist der Standardwert für 'interval.averageSeverity'? Oder gibt es einen? – amal

+0

@amal Es gibt keinen Standardwert – Jesper

+0

okay, funktioniert es nicht? Wenn es keinen Standardwert gibt, müssen Sie auch einen Standardfall für den Schalter innerhalb Ihrer aufgerufenen Methode haben. Siehe meine zweite Empfehlung – amal

Antwort

0

Verwendung ngStyle.

<td [ngStyle]="{'background-color': patientService.getSeverityColor(interval.averageSeverity)}">{{interval.earliestTime}}-{{interval.latestTime}}</td> 

Sie könnten wahrscheinlich haben, um eine Standard angeben number (oder eine Standardfarbe String-Wert innerhalb der Methode zurück), so dass das Verfahren eine gültige Farbe Zeichenfolge standardmäßig zurück.

Zum Beispiel, wenn Sie standardmäßig zurück 'grey' möchten, fügen Sie diese an Ihre Methode,

getSeverityColor(severity: number) { 
switch (severity) { 
    case -1: 
    return "grey"; 
    case 0: 
    return "green"; 

    case 1: 
    return "yellow"; 

    case 2: 
    return "orange"; 

    case 3: 
    return "red"; 

    default: 
    return "grey"; 

} 
} 
+0

Ich habe versucht, die Standardfarbe blau zu setzen, die funktioniert, aber ich habe mit einem Objekt getestet, das -1 hat, also sollte es grau zurückkehren. Ich glaube, ich habe irgendwo einen dummen Fehler, aber ich kann es nicht erkennen. – Jesper

+0

könnten Sie Ihren Code für ihn teilen? – amal

+0

Ich habe mehr Code hinzugefügt - ich denke nicht, dass es relevanter ist. Wie Sie sehen können, verwende ich die getSeverityColor() -Methode auch woanders und das funktioniert gut. – Jesper