Angular2:指令变量变化,更新元素
Angular2: Directive variable change, update element
我目前正在尝试将 类 提供给包含我所有应用程序的包装器,我通常发现这对于提供某些状态非常方便,例如 header 固定时或菜单的被打开等
所以在阅读 angular 的一些文档后,我可能应该使用 'Directive'。现在我把这一切都设置好了,它看起来像这样:
constructor(private router:Router, @Inject(DOCUMENT) private document:Document, el:ElementRef, renderer:Renderer) {
this.setClasses(el, renderer);
}
setClasses(el:ElementRef, renderer:Renderer) {
renderer.setElementClass(el.nativeElement, 'header-fixed', this.headerFixed);
}
@HostListener("window:scroll", [])onWindowScroll() {
let number = this.document.body.scrollTop;
if (number > 100) {
this.headerFixed = true;
} else if (this.headerFixed && number < 10) {
this.headerFixed = false;
}
}
现在一切正常,但如您所见,我正在根据滚动位置切换 headerFixed
变量。但是我当然可以再次 运行 函数 setClasses()
并且它会工作但是无论如何 subscribe/watch 变量并在更改时自动更新?
或者是否有更好的方法来实现我正在尝试做的事情?
您可以使用 @HostBinding
如:
@HostBinding('class.header-fixed') get myClass() {
return someCondition;
}
我目前正在尝试将 类 提供给包含我所有应用程序的包装器,我通常发现这对于提供某些状态非常方便,例如 header 固定时或菜单的被打开等
所以在阅读 angular 的一些文档后,我可能应该使用 'Directive'。现在我把这一切都设置好了,它看起来像这样:
constructor(private router:Router, @Inject(DOCUMENT) private document:Document, el:ElementRef, renderer:Renderer) {
this.setClasses(el, renderer);
}
setClasses(el:ElementRef, renderer:Renderer) {
renderer.setElementClass(el.nativeElement, 'header-fixed', this.headerFixed);
}
@HostListener("window:scroll", [])onWindowScroll() {
let number = this.document.body.scrollTop;
if (number > 100) {
this.headerFixed = true;
} else if (this.headerFixed && number < 10) {
this.headerFixed = false;
}
}
现在一切正常,但如您所见,我正在根据滚动位置切换 headerFixed
变量。但是我当然可以再次 运行 函数 setClasses()
并且它会工作但是无论如何 subscribe/watch 变量并在更改时自动更新?
或者是否有更好的方法来实现我正在尝试做的事情?
您可以使用 @HostBinding
如:
@HostBinding('class.header-fixed') get myClass() {
return someCondition;
}