错误:属性'令牌'类型'上不存在()=>任何'

时间:2017-05-15 09:44:27

标签: node.js angular ionic2

我已经在ionic2和Angualr2中创建了一个用于登录的身份验证提供程序,如下所示:

login provider

@Injectable()
export class Service{
public token : any;
constructor(public http: Http, public storage: Storage){}

    login(credentials){
    return new Promise((resolve, reject)=>{
    //headers implemented.
    this.http.post('url',credentials, {headers: headers} )
    .subscribe(res=>{
    let data = res.json();
    this.token = data.token // error is shown here. red line on token.
    storage.set('token',data.token)
    resolve(credentials);});

token的{​​{1}}字的注释行中提到了令牌上反映的错误。

需要帮助。

3 个答案:

答案 0 :(得分:2)

您应该使用类型声明。根据您使用严格TypeScript配置的错误。同样通过使用async/await,您可以生成更易读的代码。您遇到的问题要么是您没有设置let data: any,要么是因为在;声明后错过了data,并且没有使用this.storage,但只是storage

@Injectable()
export class Service{
    public token : any;

    constructor(public http: Http, public storage: Storage){}

    login async (credentials: any): Promise<any> {
        let data: any = await this.http.post('url',credentials, {
            headers: headers
        }).map(r => r.json()).toPromise();
        this.token = data.token;
        this.storage.set('token', data.token);
        return credentials;
    }

}

答案 1 :(得分:0)

什么是res.json()?它是一个函数或属性还是从string转换为json

尝试

json.parse(res)

答案 2 :(得分:0)

您应该导入import { Response } from '@angular/http';,然后一切正常