TypeScript - למה אני מקבל this.http.get(...).subscribe היא לא פונקציה ב-Angular2
הקוד שלי הוא
import 'rxjs/Rx';
...
let _this = this;
return new Promise(function(resolve, reject) {
_this.http[method](url, data, {
headers: headers
})
.toPromise()
.then(
(data) => {
resolve(data);
},
error => {
reject(error);
}
);
});
ה״subscribe״ לא מגיע מהקוד שלי, נראה שזה משהו מקורו באנגלולר.
הודעת שגיאה:
EXCEPTION: Error: Uncaught (in promise): TypeError: _this.http.get(...).subscribe is not a function
תשובה #1
אתה נלחם ביוזמת Angular2 של מעבר מהפרדיגמה האסינכרונית המבוססת על promise לאלטרנטיבה של reactive-extensions. במקום להשתמש ב-promise, השתמש ב-subscribe במקום:
import 'rxjs/Rx';
...
invoke<T>(onNext: (data: T) => void, onError: (error: any) => any) {
this.http[method](url, data, {
headers: headers
})
.map(response => response.json() as T)
.subscribe(onNext, onError);
});
כתבתי גם פוסט בבלוג על זה.
https://ievangelist.github.io/blog/angular-2-http/
