【问题标题】:Error:property 'token' does not exist on type' () => any'错误:类型'()=>任何'上不存在属性'令牌'
【发布时间】:2017-05-15 09:44:27
【问题描述】:

我在ionic2和Angualr2中创建了一个provider用于登录,如下:

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

data.token 的单词token 的注释行中提到了反映在令牌上的错误。

需要帮助。

【问题讨论】:

  • 是错字吗? public tken : any;。我觉得应该是public token : any;
  • 您的资源有错字:public tken
  • 抱歉这里是一个错字..但不是在实际代码中..更新了问题@Abhi
  • 数据在哪里声明?
  • let data = res.json; 现在更新了..@suraj

标签: node.js angular ionic2


【解决方案1】:

您应该使用类型声明。根据您使用严格的 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;
    }

}

【讨论】:

    【解决方案2】:

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

    试试

    json.parse(res)
    

    【讨论】:

      【解决方案3】:

      你应该导入import { Response } from '@angular/http';,一切都会正常

      【讨论】:

        猜你喜欢
        • 2019-11-30
        • 2020-10-31
        • 2018-01-29
        • 1970-01-01
        • 2022-09-23
        • 2019-06-06
        • 1970-01-01
        • 1970-01-01
        • 2019-07-20
        相关资源
        最近更新 更多