angular - 将字符串转换为类打字稿/角度
问题描述
我有一个模态弹出组件。它将字符串作为输入,然后动态加载其他组件。这样我就可以拥有一个模态弹出组件,而不是为我在应用程序中需要的每个模态复制一个模态弹出代码。问题是这会导致一个大的 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 反射的东西?
解决方案
您可以使用组件创建对象
private modals = {
ContactStaffComponent: ContactStaffComponent,
DocketComponent: DocketComponent
};
然后根据输入字符串,您可以获取组件并将其传递给组件解析器
let component = this.modals[this.data.component];
componentFactory = this.componentFactoryResolver.resolveComponentFactory(component);
通过这个,你可以消除一个大的 if/else 代码块。希望这会有所帮助
推荐阅读
- python-3.x - 在 Python 中使用 crcmod 生成校验和
- php - 如何在 Laravel Dusk 中获取会话数据?
- docker - Docker:无法安装特定的 pip 包
- pandas - 如何根据两个字段删除行?
- python - 如何让 matplotlib 在数字格式化程序中使用等宽“+”和“-”?
- c++ - 在 C++ 中初始化二维数组时出现“递归调用终止”错误
- c++ - 代码块:此应用程序中的调试检查失败(精度损失)
- python - Python 在处理外部变量时抛出 UnboundLocalError
- json - Powershell:将 JSON 转换为 CSV
- php - 如何在数据库 laravel 7 中上传和存储图像