2016-04-26 126 views
0

每当我添加构造函数(private http:Http)到代码,它会给出错误。任何想法?意外的令牌私人

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); 
    } 
} 

回答

0

也许你使用ES6代替打字稿。 ES6不支持这个(私有/公共和类型的可见性),并会抛出这样的错误。

随着ES6,你只能使用此:

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

    (...) 
} 

而且依赖注入,与ES6,您需要添加静态getter是否parameters属性:

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

    (...) 

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

感谢您的帮助但是,Thierry的代码不适合我的情况,ES6。我想getter是用于ES7的?我最终会这样做,导出类LoginService {0} {0}}}}}}}}}}}}} get get parameters(){ return [[Http]]; } http:Http; 构造函数(http){ this.http = http; console.log('http',http); } – Hammer

+0

是的,你不支持ES6中的'private' ;-)如果你使用Ionic2,你可以在生成项目时使用-ts选项来使用TypeScript ... –

+0

不幸的是,我不是使用Ionic2。如果我想使用ts,是否必须重新使用gulp + ts从种子中重新创建项目? – Hammer