PhpStorm Angular subscribe - 未解析的变量

时间:2017-11-20 08:57:10

标签: javascript angularjs angular phpstorm

我正在使用PhpStorm开发一个Angular应用程序,我在

上有一个"未解决的变量" 错误
  

params.myid

以下是代码行:

 this.route.params.subscribe((params: Params) => {
          const avalancheid = params.myid;
          });

如果我将类型更改为"任何" 而不是" Params"

,则没有错误
 this.route.params.subscribe((params: any) => {
          const avalancheid = params.myid;
          });

Angular版本:4.2.4,PhpStorm版本:2017.2.4

2 个答案:

答案 0 :(得分:2)

这是因为您的Params类不包含键myid,使用方括号params['myid'],您应该能够获得docs中显示的值

它崩溃的原因是因为你告诉TypeScript编译器“嘿,我期待Params”,然后你继续告诉它获取一个名为myid的属性原始Params类不包含,因此错误。

答案 1 :(得分:1)

这里可能有两个问题。

  1. 您未从Params
  2. 导入@angular/router 像这样:

    import {Params} from "@angular/router";
    

    您需要此Params类型,因为它定义为[key: string]: any,允许使用点表示法在对象中导航。

    1. 错误的打字稿版本:
    2. 这允许'使用点国家是TypeScript的一个相对较新的功能。所以另一个问题可能是你使用的是旧版本的TypeScript。尝试更新至少版本2.4.x,以便能够使用此功能,并在您使用此功能时。看看你是否也可以更新到最新的角度版本。这是值得的。

      如果您不愿意更新,即使我强烈建议您这样做,您也可以使用其他符号来访问该物业:

      this.route.params.subscribe((params: Params) => {
        const avalancheid = params['myid'];
      });