У меня проблема с созданием собственных библиотек на Angular 2+.Идея состоит в том, чтобы создать фрагмент кода между компонентами и использовать их через библиотеки с Angular.Однако у меня есть недостаток в том, что стили конфликтуют со стилями в основном приложении.
Frameworks
- Angular 2 +
- TypeScrypt
- Angular Library
Я приведу пример:
У меня есть библиотека виджетов, которая дает мне прогноз погоды с помощью модального сгенерированного с помощью ng-bootstrap.Проблема в том, что в этой библиотеке я использую некоторые особые и элементарные дизайны, чтобы придать ей хороший стиль, и что она соответствует ее бизнес-модели.
Я храню эти дизайны в папке, называемой активами, в файле с именемstyles.css влияет на классы и дизайн моей библиотеки.
project/library_name/src/lib/assets/...
Затем я импортирую эти проекты в мое приложение Angular в файл стилей или непосредственно в angular.json.
styles.css
@import "./path/to/stylesheet/assets/styles/styles.css";
или
angular.json
"styles": [
"src/styles.css",
"./path/to/stylesheet/assets/styles/styles.css"
],
"scripts": [],
Цель, которую я ищу, состоит в том, чтобы мое основное приложение компилировалосьстили моей библиотеки, но это не влияет за пределы среды компонента, который я буду использовать, то есть я не хочу, чтобы мое приложение наследовало стили этой библиотеки, поскольку они могут конфликтовать со стилями, которые яиспользовать в приложении, поэтому я определенно хочу инкапсулировать, размещая их исключительно для области и содержимого библиотеки компонентов.
Iсделаю неуклюжий пример, но его нужно понимать
Представьте, что в библиотеке я использую стили, предоставляемые Angular Bootstrap, а в своем приложении я использую стили Materialise.Это было бы ужасно и очень неуклюже, поэтому я стараюсь ограничить библиотеку, и ее компоненты не вступают в этот конфликт со стилями.
Наконец, превратите их в совершенно отдельный виджет, но встроенный.