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/