【发布时间】:2021-10-06 15:20:44
【问题描述】:
我有一个指令,当你悬停元素时实现一个滑块,如果你在悬停图像时访问这个site,该指令使其他图像绝对主图像,并启用箭头滑动到下一个图像,唯一问题是我有一个 appLazyLoadWithLoading 指令,当它们在页面中可见并且不在屏幕外时加载图像并在加载之前添加加载,我正在寻找一种方法将我的指令添加到创建的 img 元素。
let img = this.renderer2.createElement('img');
this.renderer2.setAttribute(img, "src", this.thumbnailMaker(element.url));
this.renderer2.setAttribute(img, "alt", element.name);
this.renderer2.setAttribute(img, "title", element.name);
this.renderer2.appendChild(this.el.nativeElement.parentElement, img);
这样添加了 img 元素,但我无法向其中添加指令 尝试了这种方式并 $compile 并没有工作。
this.renderer.setAttribute(img, "appLazyLoadWithLoading", "work please!");
【问题讨论】:
-
您不能在 DOM 之上动态添加指令,目前这是不可能的。一种可能的解决方案是,使用选择器
[appLazyLoadWithLoading]创建一个组件并将其转换为 Angular Elements。因此,一旦您将其添加到 DOM,使用 Angular Element 创建的特定 Web 组件就会启动。我没有尝试过,但我相信这应该可以工作 -
@PankajParkar 所以没有办法做到这一点?也许在 HTML 中编写 Img 标记,然后使用 Renderer2 将其添加到父元素?
-
你能看看我上次编辑的评论吗?我建议了一种解决方案,应该可行。
-
@PankajParkar 谢谢,我要试一试并在这里报告结果
-
太棒了,告诉我进展如何,谢谢:)
标签: angular angular-directive angular-renderer2