javascript - 将组件动态加载到动态位置
问题描述
更新(因为我更好地理解了这个问题):
我想根据用户单击的位置(哪个表格行)显示一个组件,我正在使用 ng2-smart-table,现在的问题是没有选择器可以动态加载组件。在我的情况下,它的按钮父级是行。
每行都有一个打开按钮
onOpen(event) {
var selectedRow = event.target.closest(".ng2-smart-row");
const newRow = document.createElement('tr');
newRow.innerHTML = `
<div #here></div>
`;
selectedRow.insertAdjacentHTML('afterend', newRow.innerHTML);
}
现在虽然 open 有效,但ViewChild
似乎找不到它,并且通过createCompoenent
this.here 是未定义的
@ViewChild('entry', {read: ViewContainerRef}) entry:ViewContainerRef;
const openerFactory = this.componentFactoryResolver.resolveComponentFactory(OpenActivityComponent);
const component = this.here.createComponent(openerFactory);
我想问题是,我可以动态设置@ViewChild 吗?
解决方案
花了我很长时间。这里是Stackblitz
它不完整并且有一些调整,但涵盖了这个问题的所有内容。这是答案的主要来源
推荐阅读
- c# - C# Vim.VMWare - 从库存添加
- c++ - OpenCV C++ 检测直线和坐标并将其移动到另一个图像
- fs - 如何使用 fs.write?
- mongodb - 使用 Graphql-js 模式克服代码重复
- javascript - 终端( -bash: create-react-app: command not found)似乎是错误
- c# - 具有多个派生对象的列表。如何访问派生中的字段
- python - AttributeError: 'AnonymousUserMixin' 对象没有属性 'can'
- django - 根据 forms.py 文件中定义的字段创建自动完成功能。Django-Python
- python-3.x - Python 类范围和线程
- ssl - 如何在 Alfresco SharePoint 协议中启用 SSL