Javascript PhpStorm角度订阅-未解析变量
我正在使用PhpStorm开发一个Angular应用程序,我在 粘虫 以下是代码行:Javascript PhpStorm角度订阅-未解析变量,javascript,angularjs,angular,phpstorm,Javascript,Angularjs,Angular,Phpstorm,我正在使用PhpStorm开发一个Angular应用程序,我在 粘虫 以下是代码行: this.route.params.subscribe((params: Params) => { const avalancheid = params.myid; }); 如果我将类型更改为“any”而不是“Params” 角度版本:4.2.4,PhpStorm版本:2017.2.4 您没有从@angular/router导入参数: 像这样: import {
this.route.params.subscribe((params: Params) => {
const avalancheid = params.myid;
});
如果我将类型更改为“any”而不是“Params”
角度版本:4.2.4,PhpStorm版本:2017.2.4
@angular/router
导入参数
:import {Params} from "@angular/router";
您需要此Params
类型,因为它定义为[键:字符串]:any
,允许使用点符号在对象中导航
TypeScript
,但这种“允许”使用dot-nation是一个相对较新的特性。因此,另一个问题可能是您使用的是旧版本的TypeScript。尝试至少更新到版本2.4.x
,以便能够使用此功能。看看是否可以更新到最新的角度版本。这是值得的
如果您不愿意更新,即使我强烈建议您这样做,您也可以使用其他符号访问该属性:
this.route.params.subscribe((params: Params) => {
const avalancheid = params['myid'];
});
这里可能有两个问题
@angular/router
导入参数
:import {Params} from "@angular/router";
您需要此Params
类型,因为它定义为[键:字符串]:any
,允许使用点符号在对象中导航
TypeScript
,但这种“允许”使用dot-nation是一个相对较新的特性。因此,另一个问题可能是您使用的是旧版本的TypeScript。尝试至少更新到版本2.4.x
,以便能够使用此功能。看看是否可以更新到最新的角度版本。这是值得的
如果您不愿意更新,即使我强烈建议您这样做,您也可以使用其他符号访问该属性:
this.route.params.subscribe((params: Params) => {
const avalancheid = params['myid'];
});
这是因为您的
Params
类不包含键myid
,通过使用方括号Params['myid']
,您应该能够获得如下所示的值
它崩溃的原因是因为您告诉TypeScript编译器“嘿,我希望
Params
”,此时您继续告诉它获取名为myid
的属性,而原始Params
类不包含该属性,因此出现了错误。这是因为您的Params
类不包含键myid
,通过使用方括号Params['myid']
,您应该能够获得中所示的值
它崩溃的原因是因为你告诉TypeScript编译器“嘿,我在期待
Params
”,然后你继续告诉它获取一个名为myid
的属性,而原始Params
类不包含该属性,因此出现了错误。我通常不会对某人的答案发表评论,很抱歉听起来很粗鲁,但是您可以使用点
符号来导航类似参数
的类型,因为它不是类
,而是类型
。当您尝试链接到“文档”时,请使用官方文档。您可以看到一个使用paramsdot
的示例。您所指的版本仍然在angular2上,即使版本5已发布。:)我通常不会对某人的回答发表评论,很抱歉听起来很粗鲁,但您可以使用点
符号来导航类似参数
的类型,因为它不是类
,而是类型
。当您尝试链接到“文档”时,请使用官方文档。您可以看到一个使用paramsdot
的示例。您所指的版本仍然在angular2上,即使版本5已发布。:)谢谢你的快速回答!对不起,我忘了写参数已导入,我将更新typescript!谢谢你的快速回答!对不起,我忘了写参数已导入,我将更新typescript!