我有一个directive
,可以对元素进行拖放操作。当我拖动时,我正在给拖动的元素和我拖动某些类的元素。现在我正在做这样的事情
onDragStart(event: DragEvent) {
event.dataTransfer.setData("text/plain", this.article.id.toString());
this.el.classList.add(this.draggedItemClass);
}
this.el
是我拖动的原生元素。即我正在使用JavaScript从我的Component
编写一个css类。我在一些ng库中找到了类似的代码,但感觉我做错了什么,不应该用JavaScript写css-classes,而应该通过我的模板来做。所以我的问题是在课堂列表中添加/删除" ok"在Angular 2中还是应该以某种方式通过模板(可能以我的数据为基础)?
答案 0 :(得分:1)
从指令中,您始终可以使用@HostAttribute绑定。这是最好的做法。
例:
@HostBinding('class.someClass') someField: boolean = false;
所以在onDragStart中,你只需someField = true
这是最干净,最好的洗液。
P.S。你的解决方案并不是那么糟糕,因为你让Angular可以访问好的元素,而你不是从文档中手动选择它,但无论如何,上面提到的解决方案更好