Два файла стилей в проекте
Проект Angular 5 состоит из двух частей.
Морда сайта и админка. Стилистика и файлы этих частей находятся в двух различных файлах. Первый блок стилей для морды подключается в .angular-cli.json: "styles": [ "styles.scss" ], Грузить по умолчанию CSS админки для 90% пользователей, которые админкой пользоваться не будут смысла нет. Как выполнить загрузку стилей админки, если админка находится по маршруту sitename.com/admin и в её корне лежит компонент admin.component? |
sniffysko,
Можно задавать так { "input": "./admin/admin.scss", "lazy": true, "output": "admin" } В процессе сборки будет сгенирирован admin.css файл, а потом вручную прописывать его в шаблоне админ компонента. https://stackoverflow.com/questions/...h-lazy-loading |
Спасибо, уважаемый.
Буду пробовать. |
sniffysko,
А зачем вообще грузить этот стиль глобально? Если это отдельный url на сайте (yousite.com/admin), то используя ангуляровский роутер можно выделить в отдельный модуль функциональность администрирования и внутри компонентов данного модуля подгружать нужный css. Далее angular-cli сделает отдельный чанк, который можно загружать lazy loading или preloading. Внутри этого файла будут и стили, и размета, и js. https://angular.io/guide/router#mile...ronous-routing |
Да. Приложение разбито на модули. Имеется модуль admin.module.ts, который подключается к корневому модулю. Пока он грузится в куче со всем, но потом планируется перевести его в отдельный подгружаемый модуль.
Именно с этой целью и хотел отделить функционал и подгружаемый контент в отдельный подгружаемый компонент. А что вы имеете в виду говоря "внутри компонентов данного модуля подгружать нужный css"? Вы имеете в виду, подключить его в корневом компоненте админки "admin.component", указав файлы стилей? Насколько я знаю, подключаемые в компоненте стили действуют только на компонент, не распространяя свое действие на подчиненные компоненты. |
|
В примере использования этого псевдокласса получается, что его надо применять к каждому классу. Да и подключается он непосредственно в компонент и много стилей не папишешь.
Я вот посмотрел этот урок youtube com / watch ? v=jU-n5dHHelI И тут предложен вариант: @Component({ selector: 'app-admin', templateUrl: './admin.component.html', styleUrls: [ './admin.component.scss', '../../assets/style/admin.css' ], encapsulation: ViewEncapsulation.None }) Так тоже можно? Или это немного не то? |
sniffysko,
Да, можно и так. Цитата:
::ng-deep { ... .class1 {} .class2 {} ... } |
Спасибо, destus, вечером пока дома был примерно такое и надумал.
Буду пробовать. |
Попробовал с ::ng-deep, но что-то не получилось. Возможно где-то накосячил. В итоге сделал так:
Компонент: @Component({ selector: 'app-admin', templateUrl: './admin.component.html', styleUrls: [ './admin.component.scss', '../../assets/style/admin.scss' ], encapsulation: ViewEncapsulation.None }) admin.scss @import '~@angular/material/prebuilt-themes/indigo-pink.css'; .portal-admin { @import '../service_styles/_grid.scss'; @import '../service_styles/_spacing.scss'; } admin.component.html <div class="portal-admin"> .... </div> В итоге: 1. Стили грузятся в момент входа в модуль админки. 2. Стили админки локализуются контейнером со стилем "portal-admin". |
Часовой пояс GMT +3, время: 23:16. |