是否可以在Angular4中设置动态创建的组件的样式? 我有下一个代码:
createComponent(event) {
let componentFactory = this.componentFactoryResolver.resolveComponentFactory(SbImageGalleryPinComponent);
let componentRef = this.pin.createComponent(componentFactory);
document.querySelector('.sb-component-gallery__container').addEventListener('mousemove', this.onMouseMove.bind(this));
}
onMouseMove(event) {
// ????
}
所以我想创建组件,然后相对于鼠标设置左侧和顶部位置。我正在创建对鼠标来说很粘的组件。是否有可能重现我需要的逻辑?
答案 0 :(得分:5)
您可以在动态添加的组件中添加如下所示的主机绑定,然后在创建组件后为绑定属性分配值:
@HostBinding('style.left.px')
left:number;
@HostBinding('style.top.px')
top:number;
componentRef.instance.left = 50;
componentRef.instance.top = 30;
可能需要致电
componentRef.changeDetectorRef.detectChanges();
之后也是。
答案 1 :(得分:1)
componentRef.location.nativeElement.style = `
left: 50px;
top: 30px;
`;