[英]Angular - dynamically change Ionic CSS properties in [ngStyle]
[英]How to add [ngStyle] directive dynamically in ionic 3 / angular
这就是我所拥有的并且它正在工作,它与progress
方法有关并且它正确显示:
<div [ngStyle]="{'width.%': progress()}"></div>
现在我必须动态创建元素:
let myDiv = <HTMLElement>(document.createElement('div'));
但我似乎无法找到一种方法将progress方法绑定到我动态创建的元素。
使用@fatemefazli建议的渲染器代码,它没有变化检测,因此当数据可用时它不会渲染,也不会监听进度变化方法: https : //stackblitz.com/edit/angular-fpyfmn
动态创建DOM元素的决定来自于使用HammerJS附加平移手势的需要,这需要像这样附加一个监听器:
addGestures(elem){
var hammer = new Gesture(elem);
hammer.listen();
hammer.on('pan', (e) => this.Pan(e));
}
我试图创建一个事件发布/发射器,但我没有触发器来发布它。
constructor(public el: ElementRef, public renderer: Renderer){
this.myDiv = <HTMLElement>(document.createElement('div'));
renderer.setElementStyle(this.myDiv , 'width', this.progress()+'%');
}
您不应该自己处理DOM更改(并添加元素)。
即使使用渲染器,这也是您想要避免的。
我建议的是在硬编码元素上使用事件和数据绑定,就像你第一次做的那样。
如果你真的需要出于任何原因创建一个div,那么请向我们解释你想要实现的目标,因为可能有一个解决方案,不涉及自己触摸DOM。
正如TricheTriche所说,你不应该直接访问DOM。 事实上,不仅不推荐它,而且不适用于动态变化,因为它不再真正在角度区域内运行。
你需要做的是:
查看Angular的页面Angular的动态组件加载页面的更多细节,其中它们提供了类似于您需要的类似的运行示例
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.