当前位置: 首页 > 知识库问答 >
问题:

“可观察”Nativescript类型上不存在“映射”

艾原
2023-03-14

我需要在Nativescript中从web服务获取所有警报。但是地图不起作用。我试过这个函数。在Angular 5中工作正常,但在Nativescript中显示此错误:

[ts]类型“Observable”上不存在属性“map”。在这方面。映射((响应:响应)=

我导入这个:import'rxjs/add/operator/map';从'@angular/Http'导入{Http,Headers,Response}

我的“rxjs”:“~6.1.0”,

 public AlarmsGetAll(): Observable<Alarm[]> {
    let headers = new Headers();
    headers.append('x-access-token', 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyaWQiOnsiVXNlcklEIjoiMzEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAifSwiaWF0IjoxNTI4ODgzNDU1LCJleHAiOjE1Mjk3NDc0NTV9.qei48rzt1KF9AKIEz8Aq-A8pWkESc1G3jBUfdU27oYE');
    return this.http.get(Api.getUrl(Api.URLS.AlarmsGetAll), {
      headers: headers
    })
      .map((response: Response) => {
        let res = response.json();
         console.log(res)
        if (res.StatusCode === 1) {
        } else {
          return res.StatusDescription.map(alarm => {
            //console.log(alarm)
            return new Alarm(alarm);
          });
        }
      });
  }

你能问我一些想法吗?有什么问题吗?


共有3个答案

慕烨烁
2023-03-14

最新的NativeScript使用Angular 6和Rxjs 6.1。0及以上。检查从迁移的迁移指南rxjs@5到rxjs@6

卫博学
2023-03-14

以下是您的代码修改与最新版本的rxjs v6和HttpClientModuleHttpModulev5(HttpModulev5):

import { HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

public AlarmsGetAll(): Observable<Alarm[]> {
let headers = new HttpHeaders();
headers.append('x-access-token', 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyaWQiOnsiVXNlcklEIjoiMzEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAifSwiaWF0IjoxNTI4ODgzNDU1LCJleHAiOjE1Mjk3NDc0NTV9.qei48rzt1KF9AKIEz8Aq-A8pWkESc1G3jBUfdU27oYE');
return this.http.get(Api.getUrl(Api.URLS.AlarmsGetAll), {
  headers: headers,
  observe: 'response'
}).pipe(
  map((response: HttpResponse<any>) => {
    let res = response.json();
     console.log(res)
    if (res.StatusCode === 1) {
    } else {
      return res.StatusDescription.map(alarm => {
        //console.log(alarm)
        return new Alarm(alarm);
      });
    }
  }));
}

如前所述,您可以检查迁移指南来更新rxjs v5到v6,这里是HttpClientMoules的留档:角超文本传输协议留档

步博艺
2023-03-14

如果你使用rxjs@6,则应更新运算符。

Rxjs 5

import 'rxjs/add/operator/map'

myObservable
  .map(yourdata=> yourdata + 15)
  .subscribe(...);

Rxjs 6

import { map } from 'rxjs/operators';

myObservable
  .pipe(map(yourdata=> yourdata + 15))
  .subscribe(...);

您的解决方案:

因此,您需要更新导入并使用Rxjs6的新方式

import { map } from 'rxjs/operators';

 public AlarmsGetAll(): Observable<Alarm[]> {
    let headers = new Headers();
    headers.append('x-access-token', 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyaWQiOnsiVXNlcklEIjoiMzEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAifSwiaWF0IjoxNTI4ODgzNDU1LCJleHAiOjE1Mjk3NDc0NTV9.qei48rzt1KF9AKIEz8Aq-A8pWkESc1G3jBUfdU27oYE');
    return this.http.get(Api.getUrl(Api.URLS.AlarmsGetAll), {
      headers: headers
    })
      .pipe(map((response: Response) => {
        let res = response.json();
         console.log(res)
        if (res.StatusCode === 1) {
        } else {
          return res.StatusDescription.map(alarm => {
            //console.log(alarm)
            return new Alarm(alarm);
          });
        }
      }));
  }

如果你需要更多信息

 类似资料:
  • 我想使用以下代码实现文件下载: RestAPI: 服务: 组件: 当我启动angular时,我得到错误:src/app/panel/service/download中的错误。服务ts(17,91):错误TS2339:类型“Observable”上不存在属性“map”。 将导入代码的正确wya是什么?当我点击下载按钮时,什么也没发生。

  • 我刚刚从Angular 2 beta16升级到beta17,这反过来需要rxjs 5.0。0-β。6.(此处的更改日志:https://github.com/angular/angular/blob/master/CHANGELOG.md#200-beta17-2016-04-28)在beta16中,关于可观测/地图功能,所有功能都运行良好。以下错误在我升级后出现,并在typescript尝试传输

  • 我是个新手。目前我正在学习6个特征。当我试图处理错误时,会出现如下问题:, 未找到模块:错误:无法解析“D:\WORKSPACE\Angular5\binding\src\app”中的“rxjs/add/observable/throw” 找不到模块:错误:无法解决'D:\WORKSPACE\Angular5\绑定\src\app'中的'rxjs/add/操作员/捕获' src/app/emplo

  • 我刚刚开始使用Angular2,我有一个我不能真正理解的问题。 我创建了一些模拟数据: 然后将其导入服务并“观察” 然后我有一个组件,在构造函数中: 第一个控制台。日志记录包含testDataArray属性的Object类型的对象。 第二个控制台。日志,在编译时导致错误: 同时仍按预期记录对象[Object, Object,...]的数组。 我真的不明白为什么,我肯定我做错了什么,我想要一个解释。

  • 问题内容: 我一直在阅读Observer模式,以保持UI处于最新状态,但仍然看不到它的用途。即使在我的特定对象中通知了我的MainActivity然后运行update();方法我仍然无法使用Pet对象来获取更新值,因为该对象是在Oncreate中创建的…而我只是无法创建新对象,因为那时变量会有所不同..这是我的实施,它似乎不起作用。 观察者/ MainActivity 可观察/宠物 问题答案: 首

  • 是否有一种设计模式可以形成一个“复合”观察者/可观察者? 我的意思是我有一个可观察的,它在某个变化时通知它的监听器。 每个监听器也是一个可观察的,并通知它自己的监听器(在某个动作上,它做了哪个动作是由第一个可观察的通知触发的)。 这种观察者/可观察的“链接”作为设计是可以的,还是有一个标准的模式?