ng-template 错误:模板上下文未定义名为 ...(剑道网格)的成员

Posted

技术标签:

【中文标题】ng-template 错误:模板上下文未定义名为 ...(剑道网格)的成员【英文标题】:ng-template Error: The template context does not define a member called ... (Kendo Grid) 【发布时间】:2020-05-10 13:41:10 【问题描述】:

尝试在 Angular 中将 ng-template 与 Kendo Grid 一起使用时遇到问题。 我拥有的 html 是有效的,并且在启动时可以正常编译和运行,但是 Visual Studio Code 显示此错误:

模板上下文没有定义一个叫做列的成员

这是我的代码:

<kendo-grid-column field="countryID"
  title=" 'location.country' | translate "
  >
  <ng-template kendoGridEditTemplate
    let-dataItem="dataItem"
    let-column="column"
    let-formGroup="formGroup">
    <app-dropdown-single
      [placeholder]="column.title"
      [formControl]="formGroup?.controls['countryID']"
      [data]="dataDdwCountry"
      valueField="id">
    </app-dropdown-single>
  </ng-template>
</kendo-grid-column>

所以 Visual Studio Code 给了我ng-template 的 3 个参数的错误。但是,编译时占位符确实显示“列”的正确值。 如果我只留下**let-column** 而不是**let-column="column"**,错误就会消失,但我需要的值也会消失(列现在未定义,我需要该值)。

有人可以帮忙吗?

【问题讨论】:

【参考方案1】:

更新: Angular 语言服务版本 v0.900.11+ 似乎已解决此 ng-template 错误。请在回滚到任何先前版本之前尝试该版本或更高版本,如下所示。

原文: 这与在 VS Code 中运行的 Angular 语言服务扩展有关。具体来说,当前高于 v0.900.4 的任何服务版本。通过查看 VS Code 中已安装的扩展选项卡,检查您当前安装了哪个版本的 Angular 语言服务。

在 Angular 语言服务团队或 Kendo UI 团队解决此问题之前(不确定是谁的错),您可以暂时禁用 VS Code 中扩展的自动更新并安装 Angular 语言 v0.900.4 版本通过从此处的 GitHub 发布页面安装 .vsix 文件来提供服务: https://github.com/angular/vscode-ng-language-service/releases/tag/v0.900.4

当您单击扩展选项卡中的扩展时,安装 .vsix 文件的说明位于 VS Code 中出现的 Angular 语言服务的扩展信息页面上。我把它们包括在这里:

安装特定的发布版本

下载要安装的版本的 .vsix 文件 发布选项卡。

不要直接打开 .vsix 文件。相反,在 Visual Studio 代码中, 转到扩展选项卡。点击右上角的“...”菜单 扩展选项卡的一角,选择“从 vsix 安装...”,然后 为您刚刚下载的版本选择 .vsix 文件。

也可以使用以下命令安装扩展:

代码 --install-extension /path/to/ngls.vsix

【讨论】:

非常感谢您解决了我的问题!它似乎奏效了,我对你的回答很满意!非常感谢! 谢谢大佬,我没有在github页面上安装,而是在vscode上右键单击angular语言服务的滚轮图标,选择较早的版本v0.900.4,这样就解决了问题。跨度> @BradyHuang,这是一个不错的提示!

以上是关于ng-template 错误:模板上下文未定义名为 ...(剑道网格)的成员的主要内容,如果未能解决你的问题,请参考以下文章

使用ng-template而不是模板时模板解析错误

未捕获的引用错误:应用引导模板后未定义 $

Angular,为 ng-template 使用外部模板

动态选择 ng-templates

ionic 踩过的坑

加载自定义模板标签时出现问题(错误:没有名为 x 的模块)