class 绑定和 ngClass 在 angular2 中不起作用

class binding and ngClass not working in angular2

我的模板是:

<div [class.special]="scrollOnTop" ></div>

我的 class 有一个名为 "scrollOnTop" 的 public 属性,它可以根据滚动事件改变。

我的Class:

export class AppComponent {
constructor() {
    console.log("class initiated with constructor");
    this.scrollOnTop = true;
};

public scrollOnTop: boolean;

onScroll(event){
    console.log("scroll event", event);
    if(event.belowTop){
        this.scrollOnTop = false;
        console.log("scroll on top is - " + this.scrollOnTop)
    }else{
        this.scrollOnTop = true;
        console.log("scroll on top is - " + this.scrollOnTop)
    }
}
};

div在模板渲染时有"special"class。但如果 属性 "scrollOnTop" 更改为 false,则不会删除 "special" class。

请帮忙

我会用 ngClass 代替:

<div [ngClass]="{special: scrollOnTop}" ></div>

scrollOnTop 属性 是布尔值。如果为真,则添加 special class,如果为假,则删除。

更新

export class AppComponent { 
  @HostBinding('window:scroll, ['$event'])
  onScroll(event){
    ..
  }
}

原创

我猜这是你设置的方式造成的scrollOnTop

确保分配不在 Angulars 区域:

@Component({
  ...
})
export class MyComponent {
  constructor(private zone:NgZone) {}

  someMethod() {

    ...
    this.zone.run(() => {
      this.scrollOnTop = someValue;
    });
    ...

  }
}

我已经阅读了作者的以下文章,它涵盖了 Angular2 中几乎所有声明类型的样式

https://juristr.com/blog/2016/01/learning-ng2-dynamic-styles/