2016-10-21 5 views
-1

Ich habe die folgenden Dateien in einem Winkel 2 App:Angular2 Http POST wirft Subscriber Ausnahme

injizierbare Service

@Injectable() 
export class CompanyService{ 
    constructor(private http:Http){} 

    public test():any{ 
     return this.http.get('http://echo.jsontest.com/title/ipsum/content/blah') 
     .map(res => res.json()) 
     .catch((error:any) => Observable.throw(error.json().error || 'Server error')); 
    } 
} 

Komponente

@Component({ 
    templateUrl: 'company.html', 
    providers: [CompanyService] 
}) 
export class CompanyPage{ 
    constructor(private companyServ:CompanyService){} 

    //This method is used from a submit for using ngSubmit 
    public onSubmit():void{ 
     this.companyServ.test().subscribe(data => { 
      console.log('Data', data); 
     }, err => { 
      console.error('Error', err); 
     }, console.log('End')); 
    } 
} 

Wenn die Ansicht gerendert wird und Methode onSubmit heißt, bekomme ich den folgenden Fehler:

Error when "onSubmit" method is called

Alle Informationen über den Fehler würde geschätzt viel.

Antwort

0

Die Lösung war, um den Datentyp zu ändern, die die test() Methode der Klasse CompanyService zurückgibt:

Injizierbare Service

public test():Observable<any>{ 
    return this.http.get('http://echo.jsontest.com/title/ipsum/content/blah') 
      .map(res => res.json()) 
      .catch((error:any) => Observable.throw(error.json().error || 'Server error')); 
} 

Component

I gelöscht die 3 Parameter, weil Observable<any> erlaubt nur 2 Parameter: Die Erfolgsfunktion und die Fehlerfunktion