我在Angular 13中使用ViewContainerRef.createComponent()
动态创建一个组件,如下所示
const componentInstance : ComponentRef<unknown> = this.vcRef.createComponent(YourComponent);
在某些情况下,我想在将数据嵌入视图之前将其传递到组件中,起初我不知道如何做到这一点,但当制作this stackblitz来突出问题时,我最终通过这样做来解决问题
componentInstance.instance['PropName'] = 'some value';
但是在我的电脑上它无法编译,因为我得到一个Object is of type unknown
错误。有人能解释一下为什么会这样吗?
2条答案
按热度按时间nhhxz33t1#
这是因为您将
YourComponent
类型分配给unknown
类型,如下所示:然后尝试访问属性:
方案一
要解决这个问题,首先需要在使用
unknown
类型之前输入guard:这基本上就是
unknown
的用途。当我们事先不知道类型时使用它。然后我们有一堆type guard
,在我们调用它的函数/属性之前,将它引导到正确的类型。示例:
方案二
另一种解决方案是在赋值过程中给予实际的类型:
方案三
或者根本不给出任何显式类型,因为TypeScript可以从赋值的左手推断类型:
7gyucuyw2#
从v14.1.0开始,Angular在组件引用中添加了
setInput()
方法:分享来自this article的优雅解决方案: