Как правильно переопределить компонент spartacus по умолчанию - PullRequest
0 голосов
/ 08 мая 2020

По большей части переопределение существующего Spartacus работает нормально.

Минимальное количество усилий

B2cStorefrontModule.withConfig({
      cmsComponents: {
        DefaultComponent: {
          component: CustomComponent
        }
      },

В основном я делаю это, потому что мне нужно внести некоторые изменения в компоненты html. Поэтому я копирую и вставляю его в свой сгенерированный customComponent. Но в большинстве случаев этот html содержит директивы и каналы, которые требуют добавления дополнительных модулей в мои app.modules. Иногда это работает нормально, но во многих других случаях html просто не отображается.

Пример: SearchBoxComponent

при попытке использовать html я получаю ошибку браузера:

Error: Template parse errors:
The pipe 'cxHighlight' could not be found ("
      <a
        *ngFor="let suggestion of result.suggestions"
        [innerHTML]="[ERROR ->]suggestion | cxHighlight: searchInput.value"
        [routerLink]="
          {
"): ng:///AppModule/EmvSearchBoxComponent.html@49:21

В других случаях мне удавалось исправить это, включив соответствующий модуль, который ссылается на этот канал «cxHighlight». В данном случае "SearchBoxModule". Но все равно ничего хорошего.

Как сделать эту трубу доступной в моем проекте? Или, может быть, есть еще лучший способ обойти всю эту импортированную боль?

1 Ответ

0 голосов
/ 11 мая 2020

Вы правы в том, как переопределяете компоненты в Спартаке. Как вы заметили, некоторые компоненты содержат каналы, поэтому вам придется вручную импортировать их в свой модуль компонентов. Это просто способ Angular.

Большинство наших каналов повторно используются в нескольких компонентах, поэтому мы пытаемся сделать их собственными модулями, чтобы упростить импорт.

Вы правы насчет cxHighlight, есть ошибка. Канал объявлен в SearchBoxModule, но не экспортируется, поэтому его практически невозможно импортировать. Я открою проблему , чтобы исправить это.

...