私はマップのオペレータによって呼び出されるメソッドでそれを戻す前に私のデータを変更しようとしていたと私はその方法のすべての私の他の変数の外には、私が書いたundefined
観察可能な範囲の変更
あることが判明私は何を意味するかを表すためにダウンし、ここで簡単なコードは、ログに記録テスト変数はundefined
として返されます。
import {Observable} from "rxjs/Observable";
import {Injectable} from "@angular/core";
import {Http, Response} from "@angular/http";
@Injectable()
export class DataService {
private API_URL= 'url...';
private test = 1;
constructor(private http: Http) {}
getData(): Observable<any> {
return this.http.get(this.API_URL)
.map(this.extractData)
.catch(this.handleError);
}
private extractData(res: Response) {
let body = res.json();
console.log(test);
return body.data || {};
}
}
私はこれが起こっている理由を知りたいと思ったし、それがどのように取得したデータを変更する方法はない場合、私はそれを行うことができます私は別の変数に基づいてデータを変更したいので、サービス内で(加入者コンポーネントではない)あなたが保持する.bind(this)
return this.http.get(this.API_URL)
.map(this.extractData.bind(this))
.catch(this.handleError.bind(this));
または矢印機能
return this.http.get(this.API_URL)
.map(val => this.extractData(val))
.catch(err => this.handleError(err));
を使用する必要がJS "機能" ;-)
加入者のコンポーネントとは何の関係も)
Typo?メソッドは 'extractSemanticData'または' extractData'と呼ばれますか? – cartant
私は貼り付けています。私はそれを編集します。おかげで – Nima