2017-08-08 61 views
1

我很努力地在新鮮的角度項目中使用sass。我使用CLI創建了--style=scss標誌,然後使用"styleExt": "scss""styles": ["styles.scss"]更新了.angular-cli.json文件內容。項目建設取得了成功,但來自xyz.component.scss等文件的樣式未編譯,因此未包含在樣式包中。在角度項目中綁定scss文件的方式

我設法將組件樣式文件添加到.angular-cli.json文件"styles": ["styles.scss", "./path/to/file/xyz.component.scss"]但這導致運行時錯誤:Error: Uncaught (in promise): Expected 'styles' to be an array of strings

爲避免此錯誤,我從xyz.component.ts文件中的@Component註釋中刪除了styleUrls: ['./xyz.component.scss']

現在一切正常,但我不明白這些scss文件正在發生什麼。爲什麼我必須從@Component刪除對他們的引用? (當使用ng g component cli命令時,它們被自動引用)。是否有其他選項可以使其工作,而不需要參考.angular-cli.json中的.scss文件並使用@Component參考?

我的版本設置:

@angular/cli: 1.2.7 
node: 6.10.0 
os: win32 x64 
@angular/animations: 4.3.3 
@angular/common: 4.3.3 
@angular/compiler: 4.3.3 
@angular/core: 4.3.3 
@angular/forms: 4.3.3 
@angular/http: 4.3.3 
@angular/platform-browser: 4.3.3 
@angular/platform-browser-dynamic: 4.3.3 
@angular/router: 4.3.3 
@angular/cli: 1.2.7 
@angular/compiler-cli: 4.3.3 
@angular/language-service: 4.3.3 
+0

如果您從頭開始一個新項目,該怎麼辦? 'ng new my-proj --style = scss'?那對你有用嗎? –

+0

@GioraGuttsait我也嘗試用該命令創建新項目,但結果相同。 –

回答

0

我解決了組件樣式問題,方法是卸載angular-cli並在1.4.7版本中重新安裝它。然後用--style=scss生成新項目。

0

它看起來像你告訴NG CLI要使用SASS,但後來你去給它SCSS文件。

如果您要編寫SCSS,然後將您的標誌更改爲SCSS。

ng new My_New_Project --style=scss 

VS

ng new My_New_Project --style=sass 

而且,你只需要運行命令你不應該更改任何其他配置或特別是如果你生成組件刪除任何東西。

ng generate component [name] 

NG CLI更新

全球

npm uninstall -g @angular/cli npm cache clean npm install -g @angular/[email protected]

本地

rm -rf node_modules dist # use rmdir /S/Q node_modules dist in Windows Command Prompt; use rm -r -fo node_modules,dist in Windows PowerShell npm install --save-dev @angular/[email protected] npm install

https://github.com/angular/angular-cli#updating-angular-cli

+0

哦,我的不好,這是我的問題信息中的一個錯字。我用'ng test --style = scss'和'ng test'創建了項目,然後使用'set defaults.styleExt scss'。在兩種情況下,結果都是相同的(如問題所述)。 –

+0

有趣的是,除非你從現有的項目轉換,否則你仍然不需要'設置defaults.styleExt scss'或任何東西。您使用的是什麼版本的ng cli?'ng --version' – rzzo

+0

我知道在角項目中有兩種使用scss的方法。這就是爲什麼我嘗試從頭開始使用scss('ng new test --style = scss')並通過'ng test'創建新項目,然後將其轉換爲scss('set set defaults.styleExt scss')。在兩個項目中,結果與問題描述中的結果相同。我的cli版本包含在問題描述以及其他組件版本中('@ angular/cli:1.2.7')。 –