[英]Angular2 ngIf dynamic change
我正在使用*ngIf
作为元素
<div *ngFor="let el of elemenets>
<div *ngIf="el.offsetTop < scrollTop">
....
</div>
</div>
offsetTop表示div *ngIf
条件绑定到的offsetTop。
我在组件中所做的是将pageYOffset保留在变量中,例如
class Test implements onInit{
scrollTop:number = 0;
ngOnInit{
window.addEventListener('scroll',function(){
this.scrollTop = window.pageYOffset;
console.log(this.scrollTop)
},true)
}
}
它在网站加载时有效,但是当我向上或向下滚动并更改scrollTop
变量的值时,它保持不变。
如果我正确理解,则*ngIf
监视发生更改,因此当scrollTop变量更改时,它应该再次评估条件,但在我的情况下不执行。
是否可以解决我的问题,还是必须找到其他方法? 谢谢
您可以使用:
@HostListener('window:scroll)
scrollHandler(event) {
this.scrollTop = window.pageYOffset;
console.log(this.scrollTop)
}
要么
class Test implements onInit{
scrollTop:number = 0;
ngOnInit{
window.addEventListener('scroll',() => { // <== changed to arrow function to keep `.this`
this.scrollTop = window.pageYOffset;
console.log(this.scrollTop)
},true)
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.