1

私はAngular 2を初めて使用し、ディレクティブが機能しない理由がわかりません。

これが私の指示です:

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');
  }

}

私の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>

そのため、繰り返しが終了した後に init ステートメントを実行したいと考えています。if ステートメントの前に 'this.last' をログに記録すると、false が返され、最後の繰り返しで true になります。これは正しいです。ただし、if ステートメントが失敗しています...なぜですか? 私は何を間違っていますか?または、これを行うより良い方法はありますか?

ありがとう!

4

1 に答える 1

1

Angular 2[bind]構文を使用してください。

現在、中括弧を使用すると、{{}}暗黙的に and が文字列として渡さtruefalse、 and "true" != true. 良くない。

j-slider次のように属性をラップするだけです。

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

そしてヴィオラ!

于 2016-07-25T23:49:15.557 に答える