首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角度6:生命周期钩子问题中的createComponent

角度6:生命周期钩子问题中的createComponent
EN

Stack Overflow用户
提问于 2018-06-10 22:12:20
回答 1查看 586关注 0票数 1

我正在尝试动态地创建一个组件,并有这样的角6代码设置

HTML:

代码语言:javascript
复制
<div *ngIf="defaultToTrue">
  <div #entry></div>
</div>

TS:

前构造函数

代码语言:javascript
复制
@ViewChild ('entry', {read: ViewContainerRef}) entry: ViewContainerRef;

组件创建:

代码语言:javascript
复制
const entryFormFactory = this.resolver.resolveComponentFactory(entryFormComponent);
const entryComponent = this.entry.createComponent(entryFormFactory);`

如果我将上述两行放在ngAfterContentInit()中,就会得到错误:

错误: TypeError:无法读取未定义的属性“createComponent”

如果我把它放在ngAfterViewInit()中,就会得到错误:

表达式在检查后更改

只有当我将它包装在setTimeout中时,它才能工作,这是我不应该做的。

我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-10 22:31:54

标记为#父模板变量的元素被包装在带有*ngIf的div中。但是,*ngIf将根据表达式从DOM中删除元素。这意味着在创建类时,@Viewchild引用的是一个未定义的、不存在的元素,生命周期挂钩尚未运行。

我建议你用隐藏代替。

演示

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50788505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档