Хранить угловые компоненты в базе данных - PullRequest
0 голосов
/ 11 января 2019

Я ищу возможность хранить компоненты в базе данных и добавлять их в приложение Angular. Я вижу препятствие для добавления компонентов из базы данных во время выполнения с помощью компилятора AOT. Моя другая мысль - хранить HTML (с использованием модулей ng, таких как * ngIf и т. Д.) И CSS для компонента в базе данных и назначать его шаблону и стилям компонента, выбирая данные в функции ngInit (). Основная цель - изменить HTML / CSS из базы данных.

У кого-нибудь есть мысли, опыт или советы по этому поводу?

Спасибо!

1 Ответ

0 голосов
/ 11 января 2019

Сохранение HTML в базе данных и загрузка его в компонент во время выполнения, как вы предлагаете, вполне возможна.

На угловой стороне это так же просто, как:

<div [innerHtml]="queryResult()">
  whatever is in here will be replaced when queryResult returns
</div>

В контексте безголовых систем управления контентом это вовсе не редкость. Скажем, вы хотите, чтобы пользователь генерировал контент, но хотите, чтобы угловая разметка страницы. Затем пользователь сгенерирует (обогащенный) контент через CMS, которая хранит (измененную версию) в виде большого двоичного объекта в вашей базе данных и создает внутреннюю конечную точку для вашего внешнего интерфейса для доступа к ней. Angular, в свою очередь, запросит этот контент при загрузке компонента (например, через службу content.service) и позаботится о реальном представлении. Angular обрабатывает правильную очистку строки HTML, когда вы используете свойство [innerHtml], как показано, поэтому это не должно быть проблемой безопасности.

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

...