我需要在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);
});
}
});
}
你能问我一些想法吗?有什么问题吗?
最新的NativeScript使用Angular 6和Rxjs 6.1。0及以上。检查从迁移的迁移指南rxjs@5到rxjs@6
以下是您的代码修改与最新版本的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的留档:角超文本传输协议留档
如果你使用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 可观察/宠物 问题答案: 首
是否有一种设计模式可以形成一个“复合”观察者/可观察者? 我的意思是我有一个可观察的,它在某个变化时通知它的监听器。 每个监听器也是一个可观察的,并通知它自己的监听器(在某个动作上,它做了哪个动作是由第一个可观察的通知触发的)。 这种观察者/可观察的“链接”作为设计是可以的,还是有一个标准的模式?