角度为6,订阅activateRoute.queryParamMap,WebStorm给出“忽略从订阅返回的承诺”警告

时间:2018-10-08 19:02:38

标签: angular webstorm

我在Angular 6中有以下代码:

import { Component, OnInit } from "@angular/core";
import { ActivatedRoute, Router } from "@angular/router";

...

export class someComponent implements OnInit {

  life: string;

  constructor(
    private route: ActivatedRoute
  ) {}

  ngOnInit(): void {

    this.route.queryParamMap.subscribe(urlParams => this.life = urlParams.get('foo'));
  }

  ...

}

我已经从ActivatedRoute实例化了route,我的目标是将来自URL的查询参数foo分配给我的一个名为life的变量。 但是,我在WebStorm上收到以下警告(绿色卷曲线,所以我不确定它们是警告,错误还是其他):

  1. 当我将鼠标悬停在subscribe上时,我得到Promise returned from subscribe is ignored
  2. 当我将鼠标悬停在urlParams上时,我得到Argument type (urlParams: any) => void is not assignable to parameter type PushSubscriptionOptionsInit | undefined

Screenshot for warning 1 and warning 2

  

Blockquote

2 个答案:

答案 0 :(得分:0)

在Angular中(当前在Angular-6中)。subscribe()是Observable类型的方法。 Observable类型是一种实用程序,可以异步或同步地将数据流传输到已订阅了Observable的各种组件或服务。

this._route.paramMap.pipe(
  switchMap((params: ParamMap) => {
      this.FID = params.get('id');
      return this._serviceXXX();
    }
  )
).subscribe(data => {
  // then code
});

答案 1 :(得分:0)

安装所有模块(npm i)并刷新WebStorm索引(在node_modules上执行同步命令)后,我遇到了同样的问题。