这就是我所拥有的,它正在工作,它被绑定到progress
方法,并且它正确地显示:
<div [ngStyle]="{'width.%': progress()}"></div>
现在我必须动态创建元素:
let myDiv = <HTMLElement>(document.createElement('div'));
但是我似乎找不到一种方法来将progress方法绑定到我动态创建的元素。
使用@fatemefazli建议的renderer的代码,它没有变化检测,所以当数据变得可用时它不会呈现,也不会侦听进度方法的变化:https://stackblitz.com/edit/angular-fpyfmn
动态创建DOM元素的决定来自使用HammerJS附加平移手势的需要,这需要附加一个侦听器,如下所示:
addGestures(elem){
var hammer = new Gesture(elem);
hammer.listen();
hammer.on('pan', (e) => this.Pan(e));
}
我试图创建一个事件发布/发射器,但我没有发布它的触发器。
发布于 2018-06-05 03:26:27
constructor(public el: ElementRef, public renderer: Renderer){
this.myDiv = <HTMLElement>(document.createElement('div'));
renderer.setElementStyle(this.myDiv , 'width', this.progress()+'%');
}
发布于 2018-06-07 14:51:34
您不应该自己处理DOM更改(添加元素就是)。
即使使用渲染器,这也是您希望避免的事情。
我建议在硬编码元素上使用事件和数据绑定,就像您第一次做的那样。
如果你真的因为任何原因需要创建一个div,那么请向我们解释你想要实现什么,因为可能有一种解决方案对你来说不需要自己去接触DOM。
https://stackoverflow.com/questions/50687272
复制相似问题