Javascript Angular2从任何HTML元素获取TemplateRef
我需要将组件动态加载到HTML元素中,该元素可能位于我的Javascript Angular2从任何HTML元素获取TemplateRef,javascript,angular,typescript,Javascript,Angular,Typescript,我需要将组件动态加载到HTML元素中,该元素可能位于我的应用程序组件中的任何位置 我计划使用TemplateRef作为ViewContainerRef.createEmbeddedView(TemplateRef)的参数来动态加载所需的组件 我希望它看起来像这样 var myViewRef = this.viewContainer.createEmbeddedView( getTemplateRefFromNode(document.querySelector('.anySelector')
应用程序组件中的任何位置
我计划使用TemplateRef
作为ViewContainerRef.createEmbeddedView(TemplateRef)
的参数来动态加载所需的组件
我希望它看起来像这样
var myViewRef = this.viewContainer.createEmbeddedView(
getTemplateRefFromNode(document.querySelector('.anySelector'))
);
this.resolver.resolveComponent(myComponent)
.then(factory => {
var newComponent = myViewRef.createComponent(factory, 0, myViewRef.injector);
});
这不是它的工作原理,根本不是。您没有与任何DOM节点关联的TemplateRef
TemplateRef
是由
元素创建的结构,并且仅是
元素
很难提出替代方案,因为我不清楚您所说的“我需要动态地将组件加载到可能位于我的应用程序组件中任何位置的HTML元素中”的确切含义。这不是它的工作方式,一点也不。您没有与任何DOM节点关联的TemplateRef
TemplateRef
是由
元素创建的结构,并且仅是
元素
很难提出替代方案,因为我不清楚您所说的“我需要动态地将组件加载到可能位于我的应用程序组件中任何位置的HTML元素中”的确切含义。您是否试图将组件加载到组件内容中的任意位置
如果是这样,在组件内容的某个地方,在元素上放置一个#loadLocation
属性,那么组件中的此代码将把自定义组件插入该元素中
@ContentChild('loadLocation',{read: ViewContainerRef}) loadLocation: ViewContainerRef;
constructor(private componentFactoryResolver: ComponentFactoryResolver) {}
ngAfterContentInit() {
if (!this.loadLocation) {
return;
}
let componentFactory = this.componentFactoryResolver.resolve(myComponent);
let newComponent = this.loadLocation.createComponent(componentFactory);
}
您是否试图将组件加载到组件内容内的任意位置
如果是这样,在组件内容的某个地方,在元素上放置一个#loadLocation
属性,那么组件中的此代码将把自定义组件插入该元素中
@ContentChild('loadLocation',{read: ViewContainerRef}) loadLocation: ViewContainerRef;
constructor(private componentFactoryResolver: ComponentFactoryResolver) {}
ngAfterContentInit() {
if (!this.loadLocation) {
return;
}
let componentFactory = this.componentFactoryResolver.resolve(myComponent);
let newComponent = this.loadLocation.createComponent(componentFactory);
}
第三方开发人员正在开发插件,以便在我们的网站上呈现。我希望这些开发人员能够为他们的组件的加载位置提供css选择器。你能想出一个方法来实现这一点吗?在单独的视图中呈现组件,然后将节点移动到正确的位置是否可行?第三方开发人员正在开发插件,以便在我们的网站顶部呈现。我希望这些开发人员能够为他们的组件的加载位置提供css选择器。你能想出一个方法来实现这一点吗?在单独的视图中渲染组件,然后将节点移动到正确的位置是否可行?