Angular: как переопределить шаблон компонента без написания нового компонента

Я ищу способ использовать мои компоненты, заменяя стандартные шаблоны на собственные, но при этом сохраняя AOT-совместимость.

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

Цель: если вы используете my-компонент и хотите заменить его оригинальный шаблон, вам просто нужно создать шаблон с именем overrides/my-component.html в папке хостинга родительского компонента.

Возьмем, к примеру, компонент рекламного баннера, используемый в официальном примере Angular для динамического загрузчика компонентов: в этом примере компоненты hero-job-ad и hero-profile просто предназначены для замены исходного шаблона в определенном контексте. Я рассматриваю этот код как квазиконфигурацию, поэтому я хотел бы предоставить некоторые соглашения по нему.

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

1 ответ

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

Другим вариантом будет использование динамических компонентов https://blog.angularindepth.com/here-is-what-you-need-to-know-about-dynamic-components-in-angular-ac1e96167f9e

Другие вопросы по тегам