2016-05-16 76 views
2

我有這個組件不加載樣式。該模板可以正確加載。angular2流星styleUrl不加載

// client/imports/navbar/navbar.ts 
import {Component} from "@angular/core"; 
@Component({ 
    selector: 'navbar', 
    templateUrl: 'client/imports/navbar/navbar.html', 
    styleUrls: ['client/imports/navbar/navbar.css'] 
}) 
export class Navbar {} 

到目前爲止,我已經tryed:

  • /client/index.html
  • 設置base href注入base href在基礎組件/client/app.ts在引導
  • 與加載風格:

styleUrls: [ '/client/imports/navbar/navbar.css', 'client/imports/navbar/navbar.css', 'imports/navbar/navbar.css', './navbar.css', 'navbar.css' ]

然而,在根文件夾組件加載風格witthout任何問題:

// client/app.ts 
import {Component} from "@angular/core"; 
@Component({ 
    selector: 'app', 
    templateUrl: 'client/app.html', 
    styleUrls: ['app.css'] 
}) 
export class AppComponent{} 

我已經知道:

  • 角樣式不支持相對路徑
  • 路徑不應以斜槓開始/
  • 路徑應該反駁根,因爲我使用SystemJs(流星)。

但是我仍然三葉草。

更新:

我覺得做的唯一辦法moular是聲明相同的模板HTML文件,像這裏面的風格:

<style> 
    .my-class{ 
     ... 
    } 
</style> 
<div class="my-class"> 
     ... 
</div> 
+0

作爲一種解決方法,您可以將CSS文件放置在Meteor的'public /'文件夾中。請參閱下面的答案。 –

回答

1

目前最大的問題似乎是,所有*.css文件都通過構建合併在一起,然後通過http://localhost:3000/merged-stylesheets.css?hash=something加載,因此您將獲得具有此名稱的全局樣式,但不是Angular的組件本地樣式。

考慮礦井下面的例子:

@Component({ 
    templateUrl: 'client/home.component.html', 
    styleUrls: [ 'client/home.component.css' ] 
}) 
export class HomeComponent extends MeteorComponent { 

我看到在client/home.component.css額外的網絡請求的CSS,但不幸的是,如果你看的內容,這被視爲「路線」的要求和返回整個頁面而不是CSS的內容。

編輯:人們似乎已經對這種申請一個問題:https://github.com/Urigo/angular2-meteor/issues/270

替代方法

由於使用styleUrls負荷點播的CSS,它需要使用更高版本。因此,您可以將它放在流星項目的public/文件夾中。在我的例子中,css需要位於public/client/home.component.css