2016-03-06 3 views
7

У моего приложения AngularJS 2 есть несколько файлов стиля, которые я связываю с заданием gulp. Все в порядке, так как они попадут в большой файл, который я отправляю в браузер на производстве. Мой вопрос касается Angular 2 @Component и его атрибута styleUrls.AngularJS 2 styleUrls: Что случилось с конкатенацией?

@Component({ 
    selector: 'hero', 
    templateUrl: 'hero/hero.template.html', 
    styleUrls: ['hero/hero.component.css'], 

    inputs: ['hero'] 
}) 

Благодаря теневому DOM эмуляции в режиме по умолчанию (эмулируемый) стили, определенные в hero/hero.component.css применяются только к компоненту так же, как я хочу. Мой вопрос: что происходит с конкатенацией? Я не могу объединить все файлы CSS, указанные в нескольких styleUrls, так как мы побеждаем цель инкапсуляции: стили для компонента будут протекать во весь документ. Тем не менее, я не хочу, чтобы вы делали вызов в каждом файле CSS, который требуется компоненту. Как я могу объединить эти стили (и, возможно, их уменьшить), чтобы клиент получал их все за один вызов и все еще сохранял инкапсуляцию?

+1

Ну, я использую машинопись и НПЙ работать с угловыми 2, и я заметил, что за кулисами, все styleUrls автоматически принес первое, сделали встроенное в голове, а затем отправлены в браузеры. Есть ли проблема с этим подходом? – mehulmpt

+1

вы имеете в виду для каждого компонента, определяющего 'styleUrls', есть запрос, извлекающий каждый из файлов, не так ли? Он действительно работает, я задавался вопросом, может ли это быть сведено к одному вызову каким-то образом (для производственных сред). –

+1

Я считаю, что стили не должны быть конкатенированы, но в комплекте с компонентами, например. через шаблон gulp-inline-ng2. – estus

ответ

1

Файлы шаблона и css можно связать с файлами js с помощью системного js-плагина.

import { Component } from '@angular/core'; 

import html from './hero/hero.template.html!text'; 
import css from './hero/hero.component.css!text'; 

@Component({ 
    selector: 'hero', 
    template: html, 
    styles: [css], 
}) 
export class HeroComponent implements { 
} 
Смежные вопросы