2016-05-16 6 views
0

Screenshot von Fehler:Fehler: „Eigentum '.get' existiert nicht auf Typ 'JSON' (HTML/Javascript/Angular2/Typoskript)

enter image description here

-Code, wo Fehler vorhanden ist:

import {Component, OnInit} from 'angular2/core'; 
import {Router} from 'angular2/router'; 
import {Hero} from './hero'; 
import {HeroService} from './hero.service'; 
import {RouteConfig, ROUTER_DIRECTIVES} from 'angular2/router'; 
import {HeroesComponent} from './heroes.component'; 
import {HeroDetailComponent} from './hero-detail.component'; 
import {DashboardComponent} from './dashboard.component'; 
import {SpreadSheetComponent} from './spreadsheeteditall.component'; 
import {SwitchUsersComponent} from './SwitchUsers.component'; 
import {BiddingPageComponent} from './BiddingPage.component'; 
import { Injectable } from 'angular2/core'; 
import { Jsonp, URLSearchParams } from 'angular2/http'; 



@Component({ 
    selector: 'SearchAndDisplayComponent', 
    templateUrl: 'app/SearchDisplay.component.html', 
    styleUrls: ['app/SearchDisplay.component.css'], 
    providers: [HeroService], 
    directives: [ROUTER_DIRECTIVES] 
}) 

@Injectable() 

export class SearchAndDisplayComponent{ 
    constructor(private jsonp: JSON) {} 
    search (term: string) { 
    // let ebayURL = 'http://en.wikipedia.org/w/api.php'; 
    var params = new URLSearchParams(); 
params.set('search', term); // the user's search value 
    params.set('action', 'opensearch'); 
    params.set('format', 'json'); 
    params.set('callback', 'JSONP_CALLBACK'); 
    // TODO: Add error handling 
    return this.jsonp 
       .get({ search: params }) 
       .map(request => <string[]> request.json()[1]); 
    } 


} 

Kontext des Problems. ich versuche, eine Suchleiste für eine Website zu erstellen, die im Grunde ein Klon von ebay ist

Hier ist eine Frage, die ich früher mit Anbindung an das gesamte Projekt geschrieben (Plunker/full Projekt gezippt)

Search bar that hides results that aren't typed into it

HTML-Code, wie ich versuche, es durch den Klick auf eine Schaltfläche, um die Suchleiste neben anzuzeigen:

<button (click)="search(term)">Search</button> 

Antwort

0

Sie müssen die Jsonp Klasse anstelle der JSON Klasse in den Konstruktor einfügen. Mit dem Jsonp-Objekt können Sie JSONP-Anforderungen ausführen.

import {Jsonp} from 'angular2/http'; 

(...) 
export class SearchAndDisplayComponent{ 
    constructor(private jsonp: Jsonp) {} // <----- 

    (...) 
} 
0

JSON ist Javascript-Namespace-Objekt. Sie haben Jsonp aus dem Modul angular2/http importiert, also ändern Sie im Konstruktor des youst-Dienstes JSON in Jsonp. Und vergessen Sie nicht, den Jsonp-Provider zu einer Komponente oben in der Komponentenhierarchie hinzuzufügen.

Verwandte Themen