2016-07-25 46 views
1

Ich bin neu in Angular 2 und ich habe keine Ahnung, warum meine Direktive nicht funktioniert.Angular 2 Probleme mit booleschen Vergleich in einer Richtlinie

Hier ist meine Richtlinie:

import {Observable} from 'rxjs/Rx'; 

declare var jQuery: any; 

@Directive({ 
    selector: '[j-slider]', 
}) 
export class JSliderDirective { 
elRef: ElementRef; 

    constructor(elRef: ElementRef) { 
    this.elRef = elRef; 
    } 

    @Input('j-slider') last: boolean; 

ngOnInit() { 
    console.log(this.last); 
    if (this.last == true) 
    console.log('pass'); 
    } 

} 

mein HTML:

<div class="shopping-slider"> 
    <div class="shopping-slide" *ngFor='let product of products; let last = last' j-slider="{{last ? true: false}}"> 
     <img src="{{product.img}}" alt="{{product.name}}"/> 
     <p class="shopping-label">{{product.name}}</p> 
    </div> 
</div> 

So möchte ich meine init-Anweisung auszuführen, nachdem die Wiederholung beendet ist. Wenn ich 'this.last' vor der if-Anweisung aufzeichne, gibt es mir den Wert false und dann true für die letzte Wiederholung, was korrekt ist. Wie auch immer, meine if-Anweisung versagt ... warum? Was mache ich falsch? Oder gibt es einen besseren Weg, dies zu tun?

Danke!

Antwort

1

Tun Sie sich einen großen Gefallen und verwenden Sie die Angular 2 [bind] Syntax!

mit Right jetzt die geschweiften Klammern {{}} implizit true und false als Strings ist vorbei, und "true" != true. Nicht gut.

einfach wickeln Sie das j-slider Attribut wie folgt:

<div class="shopping-slide" *ngFor='let product of products; let last = last' [j-slider]="last"> 

und Viola!

+0

Oh wow. Ich fühle mich dumm. Du bist fantastisch! Vielen Dank. –