Angular — динамически выбираемый компонент

#angular #angular-dynamic-components

Вопрос:

Я прочитал руководство по динамической загрузке компонентов, однако я не совсем уверен, что оно точно решает то, что я хотел бы.

Скажем, у меня есть концепция разных «брендов», и на основе переменной «бренд» я хотел бы загрузить другой пользовательский интерфейс для ряда компонентов. Теперь, основываясь на приведенной выше ссылке, я мог бы создать компонент, специфичный для каждого бренда, а затем иметь что-то, что делает:

 if (brand == A) {
    return Component1BrandA
} else if(brand == B) {
    return Component1BrandB
}
 ...
 

Проблема с этим заключается в том, что это было бы очень многословно, и я хочу сохранить любой конкретный «бренд», если / else упоминается в коде. Это делается для того, чтобы по мере добавления новых «брендов» я мог просто добавлять шаблоны / компоненты где-нибудь на основе каталога «бренда» или чего-то еще, и они просто автоматически подбираются.

например, я бы предпочел что-то вроде:

 return "Component1Brand${brand}"
 

Какие у меня здесь варианты? Можно ли динамически задавать имя компонента для получения с помощью переменной?

Или, если невозможно избежать «фирменного» материала, специфичного для if / else, было бы лучше добавить разные разделы в существующие шаблоны компонентов и просто показывать и скрывать их на основе «бренда»?

 <div *ngIf="isBrandA"></div>
<div *ngIf="isBrandB"></div>
 

Комментарии:

1. Когда вы говорите — на основе переменной ‘brand’, хотели бы загрузить другой пользовательский интерфейс для нескольких компонентов — означает ли это, что весь пользовательский интерфейс отличается или некоторые части можно использовать повторно? О скольких брендах мы говорим 100-1000 или более?

2. Сохраняйте информацию о barnd в файле конфигурации и загружайте компоненты, зависящие от бренда, при загрузке, проверяя этот файл конфигурации

3. @ApoorvaChikara: На данный момент это всего лишь несколько брендов, но выполнение какого-либо блока if / else для этой цели нежелательно. На данный момент пользовательский интерфейс будет похож, но нет причин, по которым они не могли бы быть совершенно разными, поэтому он должен быть гибким.

4. @Vega Предполагая, что я сохраняю файл конфигурации, что именно я в нем сохраняю? Не могли бы вы привести пример того, как это решает проблему?