angular4 动态创建组件
我想用Directive做一个公共的指令,当鼠标点击目标元素时,显示一个组件的内容,鼠标离开消失,
目前我是点击时用ViewContainerRef插入组件,
但是插入的组件与目标元素并列,而我想插入目标元素里面,
比如目标元素为<span appTxt><span/>,插入的组件的html为<span>hi<span/>
当我点击时,会变成<span appTxt><span/><span>hi<span/>
但wo 想要的效果是<span appTxt><span>hi<span/><span/>
@Directive({
selector: '[appTxt]',
})
export class TxtCopyDirective {
constructor(private el: ElementRef, private renderer2: Renderer2, public viewContainerRef: ViewContainerRef, private componentFactoryResolver: ComponentFactoryResolver) {
}
@HostListener('click', ['$event']) onclick(event: any) {
this.viewContainerRef.clear();
const componentFactory = this.componentFactoryResolver.resolveComponentFactory(插入的组件);
this.viewContainerRef.createComponent(componentFactory);
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
可以在指令的宿主元素下加一个
ng-container
作为动态组件容器,ng-container
会在渲染时消失。指令可以做一些修改:
目标元素:
目标元素所在组件获取
ng-container
容器作为参数传给指令: