Я создаю приложение углового2. Я сталкиваюсь с несколькими проблемами, когда я пытаюсь загрузить несколько таблиц стилей для одного и того же компонента. Вот код, что я делаю:Загрузка нескольких таблиц стилей для компонента в Angular2
import { Component } from '@angular/core';
@Component({
selector: 'my-tag',
templateUrl: 'my-tag.component.html',
styleUrls: [
'./style1.css',
'./style2.css'
]
})
export class MyTagComponent{}
Теперь вот мои проблемы:
Когда я пытаюсь включить файл CSS-код из другого каталога, как это:
styleUrls: [
'./style1.css',
'../public/style2.css'
]
Я получаю ошибку
Uncaught Error: Expected 'styles' to be an array of strings.
в консоли браузера.
Затем я включил вторую таблицу стилей style2.css
в каталог компонента и написал первый фрагмент. Теперь стиль загружается, но он загружается по всему миру. Вторая таблица стилей имеет имена классов, которые сталкиваются с загрузкой, и вместо стиля начальной загрузки стиль второй стили применяется глобально, т. Е. Шаблоны других компонентов стилизованы из второй таблицы стилей.
Не следует ли использовать URL-адреса, указанные в styleUrls
, только на компоненте и не наносить вреда другим компонентам?
Может ли кто-нибудь сказать мне, как загружать несколько файлов css для определенного компонента, не применяя его глобально.
Я также пробовал следующие обходные пути, но стиль применяется ко всем компонентам, которые я создал.
styles: [
require('./style1.css').toString(),
require('../public/style2.css').toString()
]
P.S. Я использую webpack в качестве модуля для моего проекта.
webpack.config (выдержка)
{
test: /\.css$/,
exclude: helpers.root('src', 'app'),
loader: ExtractTextPlugin.extract('style', 'css?sourceMap')
},
{
test: /\.css$/,
include: helpers.root('src', 'app'),
loader: 'raw'
}
Я использую webpack в качестве модуля. Ваше решение работает, когда у нас есть systemjs в качестве модуля. –
Я добавил обновление для webpack, ознакомьтесь с Update # 1 выше. Спасибо –
Я пробовал с вашей конфигурацией, но не повезло. Я разместил свой webpack.config выше. Исправьте меня, если я ошибаюсь, но 'to-string-loader' выполняет ту же работу, что и' toString() 'не так ли? Как я уже упоминал выше, когда я добавляю 'toString()' таблица стилей загружается, но она загружается глобально, и на нее воздействует каждый другой компонент. –