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