Преобразовать строку в класс машинописный / угловой - PullRequest
0 голосов
/ 01 июля 2019

У меня есть компонент, который является модальным всплывающим окном. Он принимает строку в качестве входных данных, а затем загружает другие компоненты динамически. Таким образом, у меня может быть один модальный всплывающий компонент вместо репликации модального всплывающего кода для каждого модального приложения, которое мне нужно в приложении. Проблема в том, что это приводит к большому оператору 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?

1 Ответ

0 голосов
/ 01 июля 2019

Вы можете создать объект с вашими компонентами

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

Затем, основываясь на входной строке, вы можете получить компонент и передать его в распознаватель компонентов

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

Через это,Вы можете исключить большой кусок кода if / else.Надеюсь, что это полезно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...