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]语法!

现在使用花括号{{}}隐式传递trueandfalse作为字符串, 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 回答