angular - अनक्यूट रेफरेंसएर्रॉयर:__ng_जॉन्सनप्राइज़रेक0_फिनेशन को परिभाषित नहीं किया गया है




typescript callback (2)

मेरे पास एक कोणीय आवेदन है और मैं भी JSONP का उपयोग कर रहा हूं।

यह मेरी सेवा है:

import { Injectable } from '@angular/core';
import { Http, Response, Headers, RequestOptions } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import { Page } from './page';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';
import { Jsonp } from '@angular/http';

@Injectable()
export class ProductService {

    private urlPage = 'http://api.zanox.com/json/2011-03-01/products?q=iphone&connectid=XXXXXXXXXXXX&programs=12011&callback=JSONP_CALLBACK';

    constructor(private _jsonp: Jsonp) { }

    getPage(): Observable<Page> {
        return this._jsonp.get(this.urlPage).map(this.extractData).catch(this.handleError);
    }

    private extractData(res: Response) {
        let body = res.json();
        return body || {};
    }

    private handleError(error: any) {
        let errMsg = (error.message) ? error.message :
            error.status ? `${error.status} - ${error.statusText}` : 'Server error';
        console.error(errMsg);
        return Observable.throw(errMsg);
    }

}

और मुझे यह त्रुटि मिल रही है:

अनक्यूट रेफरेंसएर्रॉयर: __ng_जॉन्सनप्राइज़रेक 0_फिनिश्ड को उत्पादों पर परिभाषित नहीं किया गया है? Q = iphone और कनेक्टिड = XXXXXXXXXX और प्रोग्राम = 12011 और कॉलबैक = __ एनजी_जसनप ____ रिकैक 0 फाइनिशन: 1

(अनाम) @ उत्पादों? q = आईफोन और कनेक्टिड = XXXXXXXXXXXX और प्रोग्राम = 12011 और कॉलबैक = __ एनजी_जसनप ____ रिकैक 0 फाइनः 1 सामान्य। जेएस: 143

Uncaught TypeError: ग्लोबलऑनरर (सामान्य। जेएस: 143) पर शून्य की संपत्ति 'लागू' पढ़ा नहीं जा सकता

globalOnerror @ common.js: 143

productService.ts: 29 200 - ठीक है

कैसे हल करने के लिए?


मैंने इस बग को संस्करण 2.3.1 के कोयोनर में वापस कर दिया। बग संस्करण 2.4.X में होता है।

"@angular/common": "~2.3.1",
"@angular/compiler": "~2.3.1",
"@angular/core": "~2.3.1",
"@angular/forms": "~2.3.1",
"@angular/http": "~2.3.1",
"@angular/platform-browser": "~2.3.1",
"@angular/platform-browser-dynamic": "~2.3.1",
"@angular/router": "~3.3.1",

यहां मेरा समाधान है:

set a variable:times
export class WikipediaService {
  constructor(private jsonp: Jsonp) {
    this.times=0;}
  search (term: string) {
    let wikiUrl = 'http://en.wikipedia.org/w/api.php';
    let params = new URLSearchParams();
    params.set('search', term); // the user's search value
    params.set('action', 'opensearch');
    params.set('format', 'json');
    params.set('callback', `__ng_jsonp__.__req${this.times}.finished`);
    this.times=this.times+1;
    // TODO: Add error handling
    return this.jsonp
           .get(wikiUrl, { search: params })
           .map(response => <string[]> response.json()[1]);
  }
}