我创建了一个名为
ngForFlTrackByIndex
的自定义指令,用于在 ngFor
内部使用。 vscode
一切都很好,但WebStorm
抱怨Expression expected
。
还有指令代码:
@Directive({
selector: '[ngForFlTrackByIndex]',
standalone: true,
})
export class TrackByIndexDirective<T> {
constructor(@Host() private readonly _ngFor: NgForOf<T>) {
this._ngFor.ngForTrackBy = (index: number): number => index;
}
}
有什么想法吗?
“预期表达式”错误通常意味着 IDE(在本例中为 WebStorm)需要某种表达式,而当前没有表达式。这可能是由于语法错误或 IDE 的误解造成的。
在您的情况下,代码似乎是正确的,如果它在 VSCode 和您的应用程序中工作正常,则可能是 WebStorm 本身的问题。
import { Directive, Host } from '@angular/core';
import { NgForOf } from '@angular/common';
@Directive({
selector: '[ngForFlTrackByIndex]'
})
export class TrackByIndexDirective<T> {
constructor(@Host() private readonly _ngFor: NgForOf<T>) {
this._ngFor.ngForTrackBy = (index: number): number => index;
}
}
WebStorm 可能不完全支持 Angular 语法或在构造函数中使用装饰器和依赖项注入的方式。
您可以尝试以下一些方法:
确保您使用的是最新版本的 WebStorm。捷脑公司 定期更新他们的 IDE 以支持最新功能 语言和框架。
检查您的 WebStorm 设置以确保其配置正确 用于角度开发。您可以在“语言”下找到这些设置 & 框架” > “JavaScript” > “框架”。
使缓存无效并重新启动 WebStorm。有时IDE会缓存 可能会导致问题。您可以从“文件”菜单执行此操作。
如果这些解决方案都不起作用,您可能需要考虑联系 JetBrains 支持人员或查看他们的论坛以获取更具体的帮助。