我的服务中有以下http.get链:
constructor(private http:Http) {}
getDetails(sysID:string){
var details;
this.http.get('https://blahURL').map(res => res.json().filter(f => f.id == another.id)[0]).subscribe(
(data) => details = data, // Reach here if res.status >= 200 && <= 299
(err) => console.log(err), // Reach here if fails
function(){ // On completion
console.log(this);
this.http.get(...) //<- fails
完成后#34;&#34;函数被触发,但我在控制台中获得的this
是一个SafeSubscriber对象,因此this.http
的下一个http调用失败。
我做错了什么?
答案 0 :(得分:1)
使用胖箭头语法保留this
值。
替换
function(){ // On completion
console.log(this);
this.http.get(...) //<- fails
使用
()=>{ // On completion
console.log(this);
this.http.get(...)
答案 1 :(得分:1)
订阅功能中的第二个this
不再引用原始对象。
尝试在初始http调用之前添加对它的引用,例如:
let self = this;
并在订阅回调/错误函数中使用它:
self.http.get(..)