2016-04-26 8 views
0

Immer wenn ich den Code (private http: Http) den contructor hinzufügen, gibt es den Fehler. Irgendeine Idee?Unerwartete Token private

events.js:154 
     throw er; // Unhandled 'error' event 
    ^
MultipleErrors: app/services/loginService:7:15: Unexpected token private 
app/services/loginService:7:23: Unexpected token http 
app/services/loginService:7:27: Unexpected token : 
app/services/loginService:7:29: Semi-colon expected 
app/services/loginService:7:33: Semi-colon expected 
app/services/loginService:7:33: Unexpected token) 
app/services/loginService:7:35: Semi-colon expected 
app/services/loginService:26:16: Semi-colon expected 
app/services/loginService:32:17: Semi-colon expected 
app/services/loginService:36:1: Unexpected token End of File 

loginService.ts

import {Injectable} from 'angular2/core'; 
import {Http, Headers, Response} from 'angular2/http'; 
import {Observable}  from 'rxjs/Observable'; 

@Injectable() 
export class LoginService { 
constructor (private http: Http) {} 
    //tet 
    /* 
    login(path:string, username:string, password:string) { 
    var creds = "username=" + username + "&password=" + password; 
    var headers = new Headers(); 
    headers.append('Content-Type', 'application/x-www-form-urlencoded'); 
    this.http.post('http://localhost:3001/sessions/create', creds, { 
     headers: headers 
     }) 
     .map(res => res.json()) 
     .subscribe(
     data => this.saveToLocal(data), 
     err => this.logError(err), 
     () => console.log('Authentication Complete') 
    ); 

    return this.http.get(path); 
    }*/ 
    saveToLocal(jwt) { 
    if (jwt) { 
     localStorage.setItem('id_token', jwt) 
    } 
    } 

    logError(err) { 
    console.error('There was an error: ' + err); 
    } 
} 

Antwort

0

Vielleicht verwenden Sie ES6 statt Typoskript. ES6 unterstützt dies nicht (Sichtbarkeit mit privat/öffentlich und Typen) und wirft solche Fehler auf.

Mit ES6, können Sie nur verwenden:

@Injectable() 
export class LoginService { 
    constructor (http) {} 

    (...) 
} 

Darüber hinaus ist für Dependency Injection, mit ES6, müssen Sie ein statisches Getter für die parameters Eigenschaft hinzufügen:

@Injectable() 
export class LoginService { 
    constructor (http) {} 

    (...) 

    static getter parameters() { 
    return [[Http]]; 
    } 
} 
+0

Danke für die Hilfe Thierry, aber der Code funktioniert nicht für meinen Fall, ES6. Ich denke Getter ist für ES7? Am Ende mache ich das so, Exportklasse LoginService { statische get Parameter() { return [[Http]]; } http: Http; Konstruktor (http) { this.http = http; console.log ('http', http); } – Hammer

+0

Ja, Sie haben keine Unterstützung von 'private' in ES6 ;-) Wenn Sie Ionic2 verwenden, könnten Sie die Option --ts beim Generieren von Projekten verwenden, um TypeScript verwenden zu können ... –

+0

Leider bin ich nicht mit Ionic2. Wenn ich ts verwenden möchte, muss ich das Projekt von jedem Seed mit gulp + ts neu erstellen? – Hammer