描述错误
标签突出显示是奇怪且不一致的
预期行为
开头标签和结束标签应具有相同的颜色。
如果代码正确,则不应显示错误红色。
屏幕截图
其他背景
在v0.900.5
,在v0.900.6
中断
除上述内容外,诸如ctrl + /
/ cmd + /
类的注释快捷方式会生成类似打字稿的注释// ...
而不是类似html的注释<!-- ... -->
这个问题确实很烦人,使扩展功能变得毫无用处,而使其变得毫无用处。
我的猜测:这在某种程度上与自定义结构指令有关,例如,角形材料指令和/或(event)
处理程序。
这是版本
_ _ ____ _ ___
/ \ _ __ __ _ _ _| | __ _ _ __ / ___| | |_ _|
/ △ \ | '_ \ / _` | | | | |/ _` | '__| | | | | | |
/ ___ \| | | | (_| | |_| | | (_| | | | |___| |___ | |
/_/ \_\_| |_|\__, |\__,_|_|\__,_|_| \____|_____|___|
|___/
Angular CLI: 8.3.23
Node: 13.6.0
OS: darwin x64
Angular: 8.2.14
... animations, common, compiler, compiler-cli, core, forms
... language-service, platform-browser, platform-browser-dynamic
... router
Package Version
------------------------------------------------------------
@angular-devkit/architect 0.803.23
@angular-devkit/build-angular 0.803.23
@angular-devkit/build-optimizer 0.803.23
@angular-devkit/build-webpack 0.803.23
@angular-devkit/core 8.3.23
@angular-devkit/schematics 8.3.23
@angular/cdk 8.2.3
@angular/cli 8.3.23
@angular/flex-layout 8.0.0-beta.27
@angular/material 8.2.3
@angular/material-moment-adapter 8.2.3
@ngtools/webpack 8.3.23
@schematics/angular 8.3.23
@schematics/update 0.803.23
rxjs 6.5.4
typescript 3.4.5
webpack 4.39.2
除上述内容外,诸如
ctrl + /
/cmd + /
类的注释快捷方式会生成类似打字稿的注释// ...
而不是类似html的注释<!-- ... -->
这个问题确实很烦人,使扩展功能变得毫无用处,而使其变得毫无用处。
我的猜测:这在某种程度上与自定义结构指令有关,例如,角形材料指令和/或
(event)
处理程序。这是版本
_ _ ____ _ ___ / \ _ __ __ _ _ _| | __ _ _ __ / ___| | |_ _| / △ \ | '_ \ / _` | | | | |/ _` | '__| | | | | | | / ___ \| | | | (_| | |_| | | (_| | | | |___| |___ | | /_/ \_\_| |_|\__, |\__,_|_|\__,_|_| \____|_____|___| |___/ Angular CLI: 8.3.23 Node: 13.6.0 OS: darwin x64 Angular: 8.2.14 ... animations, common, compiler, compiler-cli, core, forms ... language-service, platform-browser, platform-browser-dynamic ... router Package Version ------------------------------------------------------------ @angular-devkit/architect 0.803.23 @angular-devkit/build-angular 0.803.23 @angular-devkit/build-optimizer 0.803.23 @angular-devkit/build-webpack 0.803.23 @angular-devkit/core 8.3.23 @angular-devkit/schematics 8.3.23 @angular/cdk 8.2.3 @angular/cli 8.3.23 @angular/flex-layout 8.0.0-beta.27 @angular/material 8.2.3 @angular/material-moment-adapter 8.2.3 @ngtools/webpack 8.3.23 @schematics/angular 8.3.23 @schematics/update 0.803.23 rxjs 6.5.4 typescript 3.4.5 webpack 4.39.2
我在这里使用v0.900.6,这对我来说没有发生。 您是否尝试禁用其他扩展名以排除任何冲突的扩展名?
@ghaschel你是对的,并非在每个文件中。
我能够将范围缩小到此线而导致麻烦
<td mat-cell *matCellDef="let param">{{ param.costCode?.name }}</td>
更详细
<td *matCellDef="let param"></td>
可能是*
或let
。 删除其中一个可以解决颜色混乱
尝试在let param
之后添加;
let param
添加;
似乎可以解决问题。
是否有机会使这一机会永无止境?
Angular没有做;
并且更漂亮也正在删除它
这与角度表达式匹配模式有关。 正在进行的讨论在这里: https :
尝试添加; 在让参数之后
好吧,为了使IDE正确突出显示HTML模板而修复一个尚未宣布的IDE插件重大更改的工作项目,听起来不像是一种解决方案...
但是,将问题本地化是一件好事。
这会解决吗?
是的。
与模板
<ng-container matColumnDef="cost-code">
<th mat-header-cell *matHeaderCellDef>
{{ 'GENERAL.COST_CODE' | async }}
</th>
<td mat-cell *matCellDef="let param">{{ param.costCode?.name }}</td>
</ng-container>
我在*matCellDef
绑定中看到JS语法错误,但没有看到*matHeaderCellDef
。 @ BO41我缺少什么吗?
与模板
<ng-container matColumnDef="cost-code"> <th mat-header-cell *matHeaderCellDef> {{ 'GENERAL.COST_CODE' | async }} </th> <td mat-cell *matCellDef="let param">{{ param.costCode?.name }}</td> </ng-container>
我在
*matCellDef
绑定中看到JS语法错误,但没有看到*matHeaderCellDef
。 @ BO41我缺少什么吗?
我的猜测是,语法的断点实际上位于文件的上方,而不是位于屏幕截图中。 开头的ng-container
是OP屏幕截图中HTML标签的颜色错误,但不如红色的结构指令和随后的SNAFU引起注意。
我的猜测是,语法的断点实际上位于文件的上方,而不是位于屏幕截图中。 开头的
ng-container
是OP屏幕截图中HTML标签的颜色错误,但不如红色的结构指令和随后的SNAFU引起注意。
没错在打开问题时,我不知道原因。
语法一旦被破坏,就不会在文件的其余部分恢复。
@ayazhafiz如果您再次在下面复制相同的代码,则可能看起来像我的屏幕截图
@ BO41您指的是什么代码?
<ng-container matColumnDef="cost-code"> <th mat-header-cell *matHeaderCellDef> {{ 'GENERAL.COST_CODE' | async }} </th> <td mat-cell *matCellDef="let param">{{ param.costCode?.name }}</td> </ng-container>
这个。 但是任何新的开始标签都应该弄乱
好的。 您可以验证唯一的原因是let param
表达式中缺少分号吗?
如何? 有什么我可以测试的吗?
我的意思是,您能确认在ng-container
标签上和*matCellDef
定义之后报告的问题的突出显示错误是由于缺少分号引起的。
正如@ghaschel建议的
添加
;
似乎可以解决问题。
或者
可能是
*
或let
。 删除其中一个可以解决颜色混乱
但是,分号并没有丢失,因为它不是必需的。
我在* ngFor指令中遇到了同样的问题,可以确认将;
到*ngFor="let p of navItems
的末尾可以修复其余的格式。
追加另一个例子
好的,我们在做。 如果还有其他与该错误无关的错误,请随时打开一个新的问题。 如果可能,请提供一个最小的代码示例,我们可以将其复制/粘贴到编辑器中。
好的,我们在做。 如果还有其他与该错误无关的错误,请随时打开一个新的问题。 如果可能,请提供一个最小的代码示例,我们可以将其复制/粘贴到编辑器中。
<div>
<ng-template #event>
<ng-container *ngIf="!false">some code</ng-container>
</ng-template>
</div>
<ng-container *ngFor="let hour of hoursToRender, let f = first, let e = even">
</ng-container>
笔记:
有时ng-containger颜色正确,有时不正确:
<div class="container">
<div class="hoursHeaderColumn">
<ng-container *ngFor="let n of hoursToRender, let f = first, let i = index, let e = even">
<div class="hoursHeader"
[class.dayHeader]="f"
[class.evenHour]="e">
<span *ngIf="!f">
{{i - 1 + renderStartTime}}
</span>
</div>
</ng-container>
</div>
<ng-container *ngFor="let day of daysToRender">
<div class="day">
<ng-container *ngFor="let hour of hoursToRender, let f = first, let e = even">
<div (click)="onHourClick(day, hour)"
[class.dayHeader]="f"
[class.evenHour]="e"
[class.hour]="!f"
[class.picked]="!f && !loadingEvents && occuped[day.dayValue][hour].picked">
<span *ngIf="f else event">
{{day.label}}<br /> <span class="date">{{day.dateValue}}/{{day.month}}</span>
</span>
<ng-template #event>
<ng-container *ngIf="!loadingEvents">
<div class="startBleed"
*ngIf="occuped[day.dayValue][hour].startBleed"></div>
<div class="occuped"
*ngIf="occuped[day.dayValue][hour].summary && !occuped[day.dayValue][hour].startBleed && !occuped[day.dayValue][hour].endBleed">
</div>
<div class="endBleed"
*ngIf="occuped[day.dayValue][hour].endBleed"></div>
</ng-container>
</ng-template>
</div>
</ng-container>
</div>
</ng-container>
<app-loading *ngIf="loadingEvents"
class="eventsLoader"></app-loading>
</div>
我认为合适的颜色应该是绿色。
@qmarquez示例中的失败点是let <var> = <value>
语句。 如果用分号将它们加起来,我怀疑您会再次看到一致的语法突出显示。 (这并不是说这不是错误,而是在这种情况下始终可以再现。)
我认为合适的颜色应该是绿色。
具有默认Dark +主题的HTML标签的正确颜色是深蓝色。 之所以变成绿色,是因为它被作为JSX组件突出显示,这是因为JavaScript语法被“卡住了”,并且从不退出到HTML解析。 您可以通过从命令面板运行Developer: Inspect TM Scopes
并单击绿色标签来确认这一点。 Angular样式的Web组件的语法范围是meta.tag.custom.<start/end>.html entity.name.tag.html
,Dark +的颜色与其他任何HTML标记的颜色相同。 有一些主题使用与普通HTML标签不同的标记为Web组件着色,但是Dark +不是其中之一。 (应用的实际颜色不受此扩展名的控制;这是由主题处理的,而此扩展名仅提供了主题可以挂接到的语法范围。)
我怀疑您会再次看到一致的语法突出显示。
是的,就是这样,它已经解决了。 我以为它用','隔开
太完美了! 真的很高兴! <3
评论看起来不再像评论了。
还有其他人观察到这种行为吗?
除上述内容外,诸如ctrl + / / cmd + /之类的注释快捷方式还会生成类似打字稿的注释// ... ...而不是类似html的注释
我们正在努力在以后的补丁中修复此问题!
答案:Arnaud Crowther [email protected]
Отправлено:среда,января29,2020 6:47 AM
Кому:angular / vscode-ng-language-service
Копия:哈菲兹; 提到
类型:回复:[angular / vscode-ng-language-service]模板颜色突出显示损坏了(#575)
综上所述,添加分号即可解决问题。 将来的补丁程序中会更新此行为吗? 还是应该从现在开始仅添加分号以正确显示语法? 感谢您的辛勤劳动!
—
您收到此邮件是因为有人提到您。
直接回复此邮件,查看它在GitHub上https://github.com/angular/vscode-ng-language-service/issues/575?email_source=notifications&email_token=AE6GL6X4BQ4LGSYDIC627PLRAGJHNA5CNFSM4KLCQL6KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEKHN6ZY#issuecomment-579788647 ,或退订的https:// github上。 com / notifications / unsubscribe-auth / AE6GL6RPCCIDWSKAQRQGZJLRAGJHNANCNFSM4KLCQL6A 。
只需添加:Prettier会自动从<div *ngIf="data.status as status;">
删除分号,从而导致此问题。
@cpboyd如果您正在使用分号的变通方法,则可以使用任何清理和清除代码的工具来重新创建问题。 因为分号的存在不是Angular的语法。 修复程序发布后,并希望某些单元测试能够解决此问题,我们就不必使用变通方法或遇到此问题。
除非问题恶化:(
@cpboyd如果您正在使用分号的变通方法,则可以使用任何清理和清除代码的工具来重新创建问题。 因为分号的存在不是Angular的语法。 修复程序发布后,并希望某些单元测试能够解决此问题,我们就不必使用变通方法或遇到此问题。
除非问题恶化:(
我们在这里对语法进行快照测试,一旦修复,我确定我们将添加测试用例来解决此问题。 一旦解决此问题,我真的不会预见到任何回归。 :)
@ayazhafiz ,如果有帮助,请遵循另一个示例。 如果您愿意,我可以将代码放在这里。
@dannymcgee @ayazhafiz我已经在本期中使用可用代码并针对工作中的代码库测试了语法。 到目前为止没有任何问题,也不需要添加可怕的分号。
此后,它还会出现在as
运算符中,例如:
<ng-container *myDirective="{ results: results$ } as data"> <!-- it breaks here -->
<!-- All the lines below are broken -->
<my-component
[ngClass]="myClass"
我发现了一个骇人听闻的技巧: <td mat-cell *matCellDef="let g; else">
else
修复了语法提示。
只是插话,我有同样的问题。
如果我删除async as post
而只使用async
它就会消失。 并删除let i = index
或i as index
。 并不是真正可行的解决方案。
我在* ngFor指令中遇到了同样的问题,可以确认将
;
到*ngFor="let p of navItems
的末尾可以修复其余的格式。
这个为我工作
请注意第一个“ let sku”中的;
我在* ngFor指令中遇到了同样的问题,可以确认将
;
到*ngFor="let p of navItems
的末尾可以修复其余的格式。这个为我工作
请注意第一个“ let sku”中的
;
与提到的@ BO41和@cpboyd相同的问题:
https://github.com/angular/vscode-ng-language-service/issues/575#issuecomment -580404727
https://github.com/angular/vscode-ng-language-service/issues/575#issuecomment -578128919
这个错误很难修复吗? 它开放了21天,尽管它很烦人,以致无法使用当前版本的插件。 我仍在使用旧版本,现在还可以,但是我认为您应该给它更高的优先级...
Visual Studio市场上的Angular语言服务扩展已进行了重大改进。 除了解决性能和稳定性问题的重大体系结构大修之外,还修复了许多长期存在的错误。
它已大大改进,没有人可以使用它。 哈哈
有一个开放的公关。 我们都是社区贡献者!
这是任何有好奇心的人的PR: https :
感谢您的耐心等待。 非常感谢@ghaschel在#609中修复此问题,并感谢@dannymcgee帮助审核。 如果在下一版本(0.900.14)之后遇到其他语法错误,请打开另一个问题。
什么是0.900.14的ETA?
@kyliau
最有用的评论
是的。