我正在尝试动态地创建一个组件,并有这样的角6代码设置
HTML:
<div *ngIf="defaultToTrue">
<div #entry></div>
</div>TS:
前构造函数
@ViewChild ('entry', {read: ViewContainerRef}) entry: ViewContainerRef;组件创建:
const entryFormFactory = this.resolver.resolveComponentFactory(entryFormComponent);
const entryComponent = this.entry.createComponent(entryFormFactory);`如果我将上述两行放在ngAfterContentInit()中,就会得到错误:
错误: TypeError:无法读取未定义的属性“createComponent”
如果我把它放在ngAfterViewInit()中,就会得到错误:
表达式在检查后更改
只有当我将它包装在setTimeout中时,它才能工作,这是我不应该做的。
我遗漏了什么?
发布于 2018-06-10 22:31:54
标记为#父模板变量的元素被包装在带有*ngIf的div中。但是,*ngIf将根据表达式从DOM中删除元素。这意味着在创建类时,@Viewchild引用的是一个未定义的、不存在的元素,生命周期挂钩尚未运行。
我建议你用隐藏代替。
https://stackoverflow.com/questions/50788505
复制相似问题