【发布时间】:2016-07-20 07:10:37
【问题描述】:
我正在使用最新的 Angular 2 beta (45?) 并尝试将 ngClass 附加到指令选择器标识的元素。用于切换类的变量不会更新。
我怀疑这是两件事之一:
- Angular2 不能那样工作,所以这是一个范围问题;如果我 在指令选择器元素中放置一个 div 并附加 ngClass 到那个 div,它可以工作。不过我不想那样做。
- 因为我正在对窗口事件做出反应。我试过使用观察者, setTimeout 黑客和区域。不走运。
有没有办法做我想做的事?不再是这样了吗?
从内存中编写的示例代码,因为我目前无法访问它:
@Directive({
selector: "nav",
templateUrl: "templates/nav.html"
});
export class NavComponent {
isOpen:Boolean = false;
onScroll(e) {
this.isOpen = true;
}
window.onscroll = (e) => this.onScroll.call(this); // .call seemed necessary, because otherwise the scope of 'this' changed to window instead of the directive
}
以下操作无效:
index.html
<nav [ngClass]="{open: isOpen}"></nav>
模板/nav.html
<a href="#">whatever</a>
...
<a href="#">whatever 2</a>
以下确实有效:
index.html
<nav></nav>
模板/nav.html
<div [ngClass]="{open: isOpen}">
<a href="#">whatever</a>
...
<a href="#">whatever 2</a>
</div>
【问题讨论】:
-
I'm using the latest Angular 2 beta (45?)为笑点赞。 -
哈哈,我知道是对的。介于 0 到 1000 之间。
标签: angularjs angularjs-directive angular