2016-02-03 1 views
4

У меня есть это определение компонента в машинописи:Угловое 2 внешний стиль не получает встраиваются в заголовок

import {Component, ViewEncapsulation} from 'angular2/core'; 

@Component({ 
    selector: 'my-app', 
    templateUrl: '/views/sandbox.html', 
    styleUrls: ['/styles/sandbox.css'], 
    styles: [`.wow { background-color: red; }`], 
    encapsulation: ViewEncapsulation.Emulated 
}) 
export class SandBox { } 

Согласно этой статье: http://blog.thoughtram.io/angular/2015/06/25/styling-angular-2-components.html как стиль в разделе стилей и во внешней таблице стилей должны быть вложенные в заголовок угловыми.

К сожалению, второй не вводится, угловой вводят только тот, который находится в разделе стилей.

Я попытался получить доступ к /styles/sandbox.css из браузера, это нормально. Угловая также имеет доступ к /views/sandbox.html, поэтому я понятия не имею, почему этого не происходит.

Я использую: «angular2»: «2.0.0-beta.2» (последняя бета-AFAIK)

+0

впрыснуть ли при удалении свойства styleUrls? – PierreDuc

+0

«Стили» всегда вводятся. Это другое, чего нет. – Marcell

+0

Не можете ли вы просто сбросить первую косую черту в своем абсолютном URL-адресе, чтобы она выглядела так: 'styles/sandbox.css'? Это сработало для меня. – RVP

ответ

8

Я сделал несколько тестов, и странно стили от sandbox.css применяется только в том случае, когда вы используете относительные пути в пределах styleUrls атрибут:

@Component({ 
    selector: 'my-app', 
    templateUrl: '/views/sandbox.html', 
    styleUrls: ['../styles/sandbox.css'], 
    styles: [`.wow { background-color: red; }`], 
    encapsulation: ViewEncapsulation.Emulated 
}) 
export class AppComponent { 
    constructor() { 
    } 
} 

Редактировать

После того, как посмотреть на исходный код, Angular2 не позволяет использовать абсолютный путь для styleUrls. Смотрите эту строку:

Надеется, что это помогает, Тьерри

+0

Он работает, спасибо! Тем не менее, я задаюсь вопросом, является ли это ошибкой ... поскольку абсолютный url работает с 'templateUrl', но не с 'styleUrls' – Marcell

+0

После того, как вы посмотрите на исходный код, есть тест, который предотвращает использование этого ... Я обновил мой ответ. –

+0

Я добавил проблему в угловое репо относительно этого: https://github.com/angular/angular/issues/6905. Я с нетерпением жду ответа от них ;-) –

1

Лучшим способ исправить это использовать другой файл CSS для компонента и добавить его в список StyleUrls. Очиститель и будет масштабироваться по мере роста компонентов.

0

Вы можете использовать системный загрузчик зависимостей systemjs и commonjs, загружать шаблоны, стили и другие файлы.

в CommonJS moduleId: module.id в systemJs __moduleName

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

@Component({ 

moduleId:module.id, 
selector: "exf-header", 
templateUrl: "header.html", 
styleUrls:['header.css'] 

}) 

export class HeaderComponent { 

} 

 Смежные вопросы

  • Нет связанных вопросов^_^