2017-04-08 60 views
3

我使用的角度CLI,我嘗試使用localStorage的註冊組件,但是這是沒有工作,它說找不到名稱「localStorage的」 這是我的服務角2的localStorage找不到名字

create(user: User) { 
    return this.http.post('/signup', user, this.jwt(user)).map((response: Response) => response.json()); 
    } 

    private jwt(user) { 
    let currentUser = localStorage.setItem('currentUser', user); 
    if (currentUser && currentUser.token) { 
     let headers = new Headers({ 'Authorization': 'Bearer ' + currentUser.token }); 
     return new RequestOptions({ headers: headers }); 
    } 
    } 

我該如何解決這個問題?

+1

'讓currentUser = localStorage.currentUser =用戶;' – dandavis

回答

1

SetItem是void類型,不返回任何

setItem(key: string, data: string): void; 
0

你的代碼應該是:

create(user: User) { 
    return this.http.post('/signup', user, this.jwt(user)).map((response: Response) => response.json()); 
    } 

    private jwt(user) { 
    let currentUser = user 
    localStorage.setItem('currentUser', user); 
    if (currentUser && currentUser.token) { 
     let headers = new Headers({ 'Authorization': 'Bearer ' + currentUser.token }); 
     return new RequestOptions({ headers: headers }); 
    } 
    } 


但究竟這是爲什麼 if (currentUser && currentUser.token)? 如果 if條件嚴重,那麼最好將localStorage.setItem('currentUser',user)行移入其中。

0

也許你需要添加LIB:DOM在tsconfig.json

{ 
    "compileOnSave": false, 
    "compilerOptions": { 
    "outDir": "../dist/out-tsc", 
    "sourceMap": true, 
    "declaration": false, 
    "moduleResolution": "node", 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "lib": [ 
     "es2016", 
     "dom" 
    ] 
    } 
} 

(來源:tsconfig.json