You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular17与VS Code中最新Prettier的@if缩进异常求助

问题分析与解决思路

从你的配置和问题表现来看,核心是VS Code中Prettier未正确应用Angular解析器的格式化规则,以下是具体排查方向:

1. 确认VS Code默认格式化器为Prettier

打开VS Code设置(快捷键Ctrl+,/Cmd+,),搜索Default Formatter,确保选中的是esbenp.prettier-vscode,而非Angular Language Service等其他格式化工具。

2. 对齐VS Code与Prettier的缩进设置

你的Prettier配置中tabWidth设为3,但VS Code默认缩进可能为2。打开设置搜索Editor: Tab Size,将其改为3,避免编辑器自身设置覆盖Prettier规则。

3. 检查工作区配置是否覆盖全局设置

查看项目根目录下的.vscode/settings.json,确认是否存在覆盖Prettier的配置项,比如:

{
  "prettier.tabWidth": 2,
  "[html]": {
    "editor.defaultFormatter": "angular.ng-template"
  }
}

若有此类内容,删除或修改为符合需求的配置。

4. 排除插件冲突

暂时禁用VS Code中其他处理HTML/Angular格式化的插件(如Angular Language Service、ESLint),重新尝试格式化,确认是否为插件冲突导致。

5. 同步VS Code扩展与Playground的Prettier版本

尽管你使用了最新版Prettier,但VS Code的Prettier扩展可能版本滞后。打开扩展面板找到Prettier,检查并更新到最新版本,确保与Playground使用的版本一致。

6. 手动触发格式化并查看错误日志

打开命令面板(Ctrl+Shift+P/Cmd+Shift+P),选择Format Document With...,明确选中Prettier - Code formatter;同时打开VS Code输出面板(View > Output),选择Prettier选项,查看是否有解析器加载失败等错误提示。


附你的配置与格式化对比

当前Prettier配置

{
   "arrowParens": "always",
   "bracketSameLine": true,
   "bracketSpacing": true,
   "semi": true,
   "experimentalTernaries": false,
   "singleQuote": false,
   "jsxSingleQuote": false,
   "quoteProps": "as-needed",
   "trailingComma": "all",
   "singleAttributePerLine": false,
   "htmlWhitespaceSensitivity": "css",
   "vueIndentScriptAndStyle": false,
   "proseWrap": "preserve",
   "insertPragma": false,
   "printWidth": 150,
   "requirePragma": false,
   "tabWidth": 3,
   "useTabs": false,
   "embeddedLanguageFormatting": "auto",
   "overrides": [
      {
         "files": "*.html",
         "options": {
            "parser": "angular"
         }
      },
      {
         "files": ".prettierrc",
         "options": {
            "parser": "json"
         }
      }
   ]
}

VS Code格式化后结果

@if(variableTitles().length >= 1) {
<div>
   @if(variableTitles().length >= 1) {
   <p>sdfdf</p>
   }
</div>
}

期望格式化结果

@if (variableTitles().length >= 1) {
  <div>
    @if (variableTitles().length >= 1) {
      <p>sdfdf</p>
    }
  </div>
}

内容的提问来源于stack exchange,提问作者Markus Benz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 17:28:34