2017-04-08 62 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