2017-01-25 2 views
1

Ich brauche eine Richtlinie, dieAngular2 Richtlinie Lesen nicht gegebenen Wert

import { Directive, ElementRef, Input } from '@angular/core'; 

@Directive({ 
    selector: "[entityType]" 
}) 
export class EntityTypeDirective { 
    @Input() entityType: string; 

    constructor(el: ElementRef) { 
    var labelClass = { 
     C: "label-warning", 
     F: "label-info", 
     S: "label-success" 
    }; 
    el.nativeElement.classList = `label ${labelClass[this.entityType]}`; 
    } 
} 

Markup einen dynamischen Wert auf ein Element-classList

Richtlinie binden

<span [entityType]="item.type">...<span> 

Problem

Die Richtlinie bindet class="label undefined", weil entityTypeundefined ist. item.type ist ein Wert von einem *ngFor Repeater, den ich an die Richtlinie übergeben möchte.

Wo bin ich falsch gelaufen?

Antwort

3

Sie sind an der Stelle falsch gelaufen, an der Sie die ngOnInitlifecycle hook verwenden sollten :). Dies ist, wo die Bindung in @Input Winkel

@Directive({ 
    selector: "[entityType]" 
}) 
export class EntityTypeDirective implements OnInit { 
    @Input() entityType: string; 

    constructor(private el: ElementRef) {} 

    ngOnInit() { 
    let labelClass: any = { 
     C: "label-warning", 
     F: "label-info", 
     S: "label-success" 
    }; 
    this.el.nativeElement.classList = `label ${labelClass[this.entityType]}`; 
    } 
} 
Verwandte Themen