gpt4 book ai didi

Angular 2.Http 映射\订阅问题

转载 作者:搜寻专家 更新时间:2023-10-30 21:42:56 25 4
gpt4 key购买 nike

想要读取 json 文件并构建 settingsProvider。

所以我是这样做的:

import {Http} from "angular2/http";
import {Injectable} from "angular2/core";

@Injectable()
export class SettingsProvider{
url: string = "";
constructor(http: Http){
http.request('js/app/config/config.json').map(data => data.json()).subscribe(data => this.url = data.url);
}

getUrl():string {
return this.url;
}

}

但是出现了这样的错误:

enter image description here

那么,我的第一个问题是 - 为什么会这样?

第二个问题:

当我这样做时:

http.request('js/app/config/config.json').subscribe(data => {
this.url = data.json().url;
});

this 不指向类,而是指向 Subscriber 实例。为什么这样?我认为 TypeScript 中的“fat-arrow”-lambda 可以帮助我们摆脱这种奇怪的闭包。

最佳答案

Map函数需要从RXJS中引入,例如尝试:

 import 'rxjs/add/operator/map';

没有必要在构造函数中做http请求,你应该让它成为它自己的方法。前段时间的一个例子,我更改了名称,因此在您的上下文中更有意义:

@Injectable()
export class SettingsProvider{

constructor(public http: Http) {
}

getSettings() {
//http request code here
}
}

如果您不能基于此让它工作,我可以稍后包含更多代码。导入至少应该可以解决您的 map 问题。

关于Angular 2.Http 映射\订阅问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34719417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com