Расширить компонент Spartacus cms в библиотеке - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь создать Angular библиотеку, расширяющую функциональность компонента изображений продукта на странице сведений о продукте Spartacus.

При настройке компонента cms я понял, что необходимо добавить в app.component несколько строк вроде следующих. html:

<ng-template cxOutletRef="ProductImagesComponent">
  <cx-product-images></cx-product-images>
</ng-template>

Можно ли это интегрировать часть в библиотеке, поэтому пользователю, который ее устанавливает, не нужно менять свой app.component. html? Я не могу найти никакой информации об этом. Кроме того, можно ли создать библиотеку, расширяющую компонент cms? Я новичок в Angular и Спартаке.

Спасибо

1 Ответ

0 голосов
/ 18 июня 2020

Использование розеток в соответствии с вашим примером является одним из возможных способов настройки компонента, однако я не думаю, что вы обычно делаете именно то, что предлагали. Розетки - это способ изменить шаблон, отображаемый для этого компонента, но по умолчанию визуализация будет заключаться в динамическом включении компонента изображений продукта в этот шаблон ... поэтому ваш пример ничего не меняет по сравнению со значением по умолчанию. Обычно вы используете выходы для относительно небольших изменений или для размещения дополнительного содержимого до / после фактического содержимого компонента. Розетки не будут работать во всех случаях использования, потому что полный контекст может быть недоступен

Другой подход - создать новый компонент в Angular и сопоставить этот новый компонент с компонентом CMS, поступающим из бэкэнда. См. https://sap.github.io/spartacus-docs/customizing-cms-components/ для документации по этому поводу.

Я сам не пробовал, но кажется разумным создать библиотеки, содержащие ваши собственные Angular заменяющие компоненты, и которые будут просто следовать стандартный Angular подход к созданию библиотек. Я думаю, что нужно подумать о том, как разработчик, использующий библиотеку, затем будет использовать компоненты из вашей библиотеки. У вас может быть документация, которая поможет им явно настроить сопоставление компонентов для их собственного проекта, или вы можете предоставить методы конфигурации, которые они могут просто вызывать из своего компонента приложения для автоматического обновления конфигурации. Стандартные компоненты для Spartacus уже следуют этой модели, см. https://sap.github.io/spartacus/modules/CmsModule.html#source

...