首页 > 解决方案 > 将字符串转换为类打字稿/角度

问题描述

我有一个模态弹出组件。它将字符串作为输入,然后动态加载其他组件。这样我就可以拥有一个模态弹出组件,而不是为我在应用程序中需要的每个模态复制一个模态弹出代码。问题是这会导致一个大的 if/else 语句,我根据字符串输入加载适当的组件

if (this.data.component == "ContactStaffComponent")
  componentFactory = this.componentFactoryResolver.resolveComponentFactory(ContactStaffComponent);
else if (this.data.component == "DocketComponent")
  componentFactory = this.componentFactoryResolver.resolveComponentFactory(DocketComponent);
else if (this.data.component == "FilingComponent")
  componentFactory = this.componentFactoryResolver.resolveComponentFactory(FilingComponent);
else if (this.data.component == "ServiceListRecordComponent")
  componentFactory = this.componentFactoryResolver.resolveComponentFactory(ServiceListRecordComponent);
else { }

有没有办法将字符串转换为类型?类似于.net 反射的东西?

标签: angulartypescriptangular7

解决方案


您可以使用组件创建对象

private modals = {
    ContactStaffComponent: ContactStaffComponent,
    DocketComponent: DocketComponent
};

然后根据输入字符串,您可以获取组件并将其传递给组件解析器

let component = this.modals[this.data.component];
componentFactory = this.componentFactoryResolver.resolveComponentFactory(component);

通过这个,你可以消除一个大的 if/else 代码块。希望这会有所帮助


推荐阅读