Отдельные стили для отдельного модуля в Angular 5

Мой проект состоит из двух основных частей. Один для общедоступных веб-страниц, а другой для панели управления администратора. У каждого из них есть отдельные файлы CSS и javascript для своего шаблона.

Если я определяю все файлы CSS и js в index.html, все файлы загружаются при первом совпадении веб-страницы, а также может иметь конфликт между классами CSS.

Как я могу справиться с этой проблемой?

app.component:

<router-outlet></router-outlet>

app-routing.module:

import { NgModule } from "@angular/core";
import { Routes, RouterModule } from "@angular/router";

import { FirstComponent } from './first/first.component';


const appRoutes: Routes = [
  { path: 'first', component: FirstComponent },
  {
    path: 'controlpanel',
    loadChildren: 'app/control-panel/control-panel.module#ControlPanelModule'
  },
  {
    path: 'publicpanel',
    loadChildren: 'app/public-panel/public-panel.module#PublicPanelModule'
  }
];

у каждого модуля есть свои подмодули. Могу я разделить их стили?

Почему бы не определить CSS для каждого компонента?

user184994 16.07.2018 13:33

вы имеете в виду, что добавляете css файлы в список styleUrls?

Mohammad Ali 16.07.2018 13:35

Да, дайте каждому компоненту свой собственный файл CSS и загрузите его в список styleUrls, так вы не получите конфликтов.

user184994 16.07.2018 13:36

как насчет файлов js. например, если я использую шаблон начальной загрузки, у него есть файлы js

Mohammad Ali 16.07.2018 13:37
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
3
4
2 002
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Используйте sass и создайте флаг класса для общественности и администратора составные части как это

тема / _public.scss

.public{ 
  label { 
    color:red;
  }
}

тема / _admin.scss

.admin { 
  label {
    color:green;
  }
}

и это в основном style.scc

@import "theme/_public.scss";
@import "theme/_admin.scss";

это намного лучше для производительности приложения, у вас будет один файл стиля со стилем общедоступной и административной страниц

пример stackblitz

Мухаммад Альбармави, с вашим методом, оба стиля загружены в первую встречу

Mohammad Ali 17.07.2018 11:28

Да, весь стиль будет связан с одним файлом, но конфликт не будет, потому что флаг класса

malbarmavi 17.07.2018 11:37

просто посмотрите на каждый флаг, дайте разный цвет для элемента метки

malbarmavi 17.07.2018 11:39
Ответ принят как подходящий

Я нашел решение. Мы можем отключить или включить файлы css в компоненте.

document.styleSheets[2].disabled = false;

или же

document.styleSheets[2].disabled = true;

это оно.

Это очень полезно, но есть одна проблема, которую мы должны найти в массивах css, которые нам нужно отключить.

user11988937 27.10.2019 06:22

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