我正在使用WebStorm进行Angular 2项目。
我在TypeScript和我的一个组件中编码,我使用Observable
:
import { Observable } from "rxjs/Rx";
import 'rxjs/Rx';
@Component({...})
export class SearchComponent {
@ViewChild('input') input: ElementRef;
ngAfterViewInit() {
let inputElement = this.input.nativeElement;
let keyups = Observable.fromEvent(inputElement, 'keyup'); // <-- WebStorm error
keyups.subscribe(data => console.log(data));
}
}
此代码确实有效(每次在输入字段中输入内容时都会记录到控制台),但WebStorm会抱怨fromEvent
方法(“未解析的函数或方法”)。
此外,如果我在Observable
类上触发自动完成,则缺少RxJS文档中列出的大多数运算符。例如,输入Observable.fr
应生成from
,fromCallback
,fromEvent
,fromPromise
的列表...但WebStorm仅建议一种方法({{1 }})。
如何在WebStorm中为可观察对象获得正确的自动完成/ TypeScript支持?
我尝试了不同的方式导入withLatestFrom
,我已尝试this article中的建议(即将Observable
添加到"files": ["node_modules/rxjs/Rx.KitchenSink.d.ts"]
),但没有任何效果。
答案 0 :(得分:6)
即使使用WebStorm 2016.2(最终版),我也遇到了同样的问题。对我有用的解决方案是对另一个答案的评论,所以为了使其更加明显,这里作为一个正确的答案:
.idea
文件夹。我做了这个,然后重新启动了WebStorm。然后所有的rxjs定义都有效。
答案 1 :(得分:4)
我正在使用WebStorm 2016,这对我的角度2 +离子2项目有所帮助:
WebStorm -> Preferences -> Languages & Frameworks -> JavaScript -> Libraries
-> [Ensure 'ECMAScript 6' and 'your-progect/node_modules' are checked]
.then Apply -> Save -> Restart WebStorm
答案 2 :(得分:2)
原来这是PhpStorm的一个问题。
我联系了Jetbrains支持,他们建议升级到版本2016.2 EAP(早期访问计划),这确实解决了这个问题。
答案 3 :(得分:1)
尝试使用这些设置来查看webstorm是否可以选择
tsconfig.json(在angular2项目的根目录中)
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false
}
}
在你的package.json中(如果你还没有安装打字)
"devDependencies": {
"typings":"^1.0.4"
}
在项目的根目录中创建文件typings.json和/或确保在文件中添加的文字中添加了这些文件
typings.json
{
"globalDependencies": {
"core-js": "registry:dt/core-js#0.0.0+20160317120654",
"jasmine": "registry:dt/jasmine#2.2.0+20160505161446",
"node": "registry:dt/node#4.0.0+20160509154515"
}
}
完成所有这些运行后(安装新的dev模块
npm install
然后运行此命令
安装打字机打包安装
切换到Webstorm / Phpstorm并允许IDE完成索引。然后检查Webstorms自动完成是否有多个与Observables相关的方法。
尝试在项目文件中导入Observable,如
import { Observable } from 'rxjs';
可能不是你想要的答案,但值得尝试,因为人们的想法已经不多了。
编辑:固定文件名不是 typing.json 应为 typings.json
答案 4 :(得分:0)
我在WebStorm 2016.3上遇到过类似的问题,很幸运通过将IDE配置为使用rxjs
作为javascript库来解决它:
点击&#34;添加...&#34;并设置以下字段:
rxjs
目录下的node_modules
目录。点击&#34;确定&#34;并确保该库已应用于项目级别。