【发布时间】:2019-07-31 15:21:39
【问题描述】:
首先你必须明白我正在从 IntelliJ 切换到 VSCode(也许我对 IntelliJ 寻找模块的方式感到太舒服了)。
我将主要使用 VSCode 来开发由 Angular CLI 生成的 Angular 应用程序。
从一个新的 CLI 生成的应用程序开始,在全新的 VSCode 安装中打开项目(删除了设置和所有扩展)我意识到我需要在 VSCode IntelliSense 意识到它们之前手动导入任何 Angular 模块。
示例: 假设我需要创建 2 个 Angular 服务。两者都需要 HttpClient 来获取数据。在第一个上,我更改了构造函数属性以注入它。当按下 Quick Fix 快捷方式 (CTRL + .) 时,我只收到一个建议,即从 selenium-webdriver 导入 HttpClient。
还是在第一个服务中,我手动添加了 Angular HttpClient 导入:
import { HttpClient } from '@angular/common/http';
转到第二个服务,更改构造函数以以相同方式添加 httpClient 属性,现在按下 Quick Fix 快捷方式时我得到了更多结果:
这是预期的行为还是我做错了什么?已经在 3 个不同的系统上尝试过,结果相同。我期待 IntelliSense 有点删除关于 HttpClient 上下文的智能。
这对于任何模块都是一样的,这意味着您需要手动导入一次,然后 VSCode 才会意识到它。
【问题讨论】:
-
我也遇到过同样的事情
-
@JanWendland 你让我很开心,因为我知道我不是唯一一个面临这个问题的人!
-
@JanWendland 我发现更改此行为的一种方法是更改主 tsconfig.json 文件中的 typeRoots 。尝试在数组中添加“node_modules/@angular/common/http”。现在您将可以访问从此模块公开的所有 API。但最终这样做是没有意义的。
标签: angular typescript visual-studio-code