TypeError: keine Funktion Typoskript Klasse
Im immer folgende Fehler in meinem Typoskript Klasse und kann nicht verstehen, warum. Alles was ich Tue, ist zu versuchen, rufen eine Hilfsfunktion, die die Weitergabe des token.
Fehler:
post-Fehler: TypeError: this.storeToken ist nicht eine Funktion(...)
Klasse:
/**
* Authentication Service:
*
* Contains the http request logic to authenticate the
* user.
*/
import { Injectable } from '@angular/core';
import { Http, Response, Headers, RequestOptions } from '@angular/http';
import 'rxjs/Rx';
import { Observable } from 'rxjs/Observable';
import { AuthToken } from './auth-token.service';
import { User } from '../../shared/models/user.model';
@Injectable()
export class Authenticate {
constructor(
private http: Http,
private authToken: AuthToken
) {}
post(user: User): Observable<any> {
let url = 'http://localhost:4000/';
let body = JSON.stringify(user);
let headers = new Headers({ 'content-type': 'application/json' });
let options = new RequestOptions({ headers: headers });
return this.http.post(url + 'login', body, options)
.map(this.handleData)
.catch(this.handleError);
}
private storeToken(token: string) {
this.authToken.setToken(token);
}
private handleData(res: Response) {
let body = res.json();
this.storeToken(body.token);
return body.fields || {};
}
private handleError(error: any) {
console.error('post error: ', error);
return Observable.throw(error.statusText);
}
}
Ich bin neu in Maschinenschrift, so bin ich sicher, dass mir etwas fehlt lächerlich einfach. Ein Beistand wäre toll.
Dank.
InformationsquelleAutor Aaron | 2016-12-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollte er entweder (mit Funktion.der Prototyp.binden):
Oder (mit Pfeil-Funktionen):
Was passiert ist, übergeben Sie einen Verweis auf die Methode, aber Sie ist nicht gebunden an eine bestimmte
this
so, wenn die Methode ausgeführt wird, diethis
im Hauptteil der Funktion ist nicht die Instanz der Klasse, sondern der Bereich, führt die Methode.Jeder von denen helfen, die richtigen Rahmenbedingungen für die
this
, aber in einer anderen Weise.Bearbeiten
Andere option ist:
Auf diese Weise die "Methoden" sind bereits gebunden, aber in diesem Fall werden Sie nicht Teil des Prototyps, und in der Tat werden nur Eigenschaften vom Typ Funktion.
Zum Beispiel:
Kompiliert:
Deshalb
method2
können nicht (leicht) überschrieben, so hüten Sie sich vor dieser Umsetzung.Sichere Sache. Ich bearbeitet meine Antwort mit einem anderen Ansatz, ich bin kein fan von, aber es ist immer noch eine option.
Ich fühle die Pfeil-Funktionen sind der Weg zu gehen, da es ein konsistentes Muster. Ich war das Experimentieren mit verschiedenen Muster, die ich online gefunden habe und vergessen habe zu konvertieren, die auf das Pfeil-Funktion, die ist, warum ich hatte das Problem und wusste nicht, was passiert ist.
InformationsquelleAutor Nitzan Tomer