Hacktoberfest 2026:維護者為十月標記出來的 issue,仍然開放、適合新手。 瀏覽 Hacktoberfest issue

`ng new --view-encapsulation` has no effect on generated components

已關閉
#34,388 0 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視

維護者通常 1 天內回覆

已經有一個關聯 PR 被合併了。

  • #34389 來自 @MeAkib —— 已合併

評估

難度
3/5
預估耗時
1-2 天
新手友好度
35/100
Issue 類型
缺陷
描述清晰度
描述清楚
活躍度
停滯
技術堆疊
angular, typescript
領域
build-system, cli

研究方向

The issue identifies the ng new and ng generate application paths, the generated root App component, angular.json component schematic defaults, and main.ts bootstrap options. Trace how --view-encapsulation flows through those generation paths and compare the generated files with the reproduction steps. Done means the selected mode affects the initial component and later generated components under AOT.

由索引模型根據 Issue 內容生成。

描述

area: @schematics/angular
Command

new

Is this a regression?
  • Yes, this behavior used to work in the previous version
The previous version in which this bug was not present was

No response

Description

The --view-encapsulation option of ng new / ng generate application is documented as "Sets the view
encapsulation mode for components in the initial project", but it currently has no effect:

  1. The root App component is generated without encapsulation, so its styles stay scoped (Emulated).
  2. The value is not saved to the project's @schematics/angular:component defaults in angular.json, so components
    generated later with ng g c also use Emulated.
  3. For --no-standalone apps, main.ts gets bootstrapModule(AppModule, { defaultEncapsulation: ViewEncapsulation.X }).
    defaultEncapsulation is only read by the JIT compiler, so it has no effect with AOT, which is the default for
    ng build and ng serve.

This looks like #13689 again: it was fixed in 89797900db by setting the encapsulation on the root component and in
bootstrapModule, but the root component part was removed in 58bc5b8f2a (for #13742, invalid generated code), leaving
only the JIT-only option.

Minimal Reproduction
  1. ng new ve-repro --defaults --view-encapsulation=None (same result with --no-standalone)
  2. Add h1 { color: red; } to src/app/app.css
  3. ng build --configuration development
  4. The output contains h1[_ngcontent-%COMP%], i.e. the styles are still encapsulated.
  5. angular.json has no viewEncapsulation under projects.ve-repro.schematics, so ng g c foo also generates an
    Emulated component.
Exception or Error

Your Environment
Latest
Anything else relevant?

Possible fix: set encapsulation on the generated root component, save viewEncapsulation in the component schematic
defaults, and drop defaultEncapsulation from main.ts. Happy to send a PR.

主要語言
TypeScript
星號
27k
分支
11.8k
平均合併
1 天 6 小時
30 天內合併 PR
216

環境準備

從這裡開始

  1. 先讀完整個 Issue,再讀專案的貢獻指南。
  2. 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
  3. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 Issue 編號。

angular/angular-cli 的其他 Issue

查看 angular/angular-cli 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。