【问题标题】:Ionic 2 - Get data from the serviceIonic 2 - 从服务中获取数据
【发布时间】:2017-04-05 23:59:36
【问题描述】:

情况

对不起,如果这是一个基本问题。

在我的 Ionic 2 应用程序中,我有一个 POST 登录请求。它工作正常。有一个带有电子邮件和密码的表格。我将此数据发送到 API,然后我得到相应的用户数据作为响应。

唯一的问题是我在服务中获取了这些数据。

然后如何将这些数据传递给 loginPage 组件?

在控制台中,我可以看到所有正确接收的数据。只是 console.log 在服务内部。

我只需要将数据传递给组件。

代码

LoginPage 组件

makeLogin() 
{
    var email = this.loginForm.value.email.trim();
    var password = this.loginForm.value.password.trim();

    this.userService.submitLogin(email, password, this.api_access_key);

}

服务

submitLogin(email: string, password: string, api_access_key: string) 
{       
    let urlSearchParams = new URLSearchParams();
    urlSearchParams.append('email', email);
    urlSearchParams.append('password', password);
    urlSearchParams.append('api_access_key', api_access_key);

    let body = urlSearchParams.toString()

    var headers = new Headers();
    headers.append('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');

    this.http
        .post(this.loginUrl, body, { headers: headers })
        .map(response => response.json())
        .subscribe(data => {
                    console.log('login API success');
                    console.log(data);
                }, error => {
                    console.log(error);
        });
}

【问题讨论】:

    标签: angular ionic-framework ionic2


    【解决方案1】:

    您需要在component 中而不是在service 中使用subscribe

    // 组件

    makeLogin() 
    {
        var email = this.loginForm.value.email.trim();
        var password = this.loginForm.value.password.trim();
    
        this.userService.submitLogin(email, password, this.api_access_key).subscribe((res) => {
          console.log(res);
        }, (error) => {
          console.log(error);
        });
    
    }
    

    // 服务

    submitLogin(email: string, password: string, api_access_key: string) 
    {       
        let urlSearchParams = new URLSearchParams();
        urlSearchParams.append('email', email);
        urlSearchParams.append('password', password);
        urlSearchParams.append('api_access_key', api_access_key);
    
        let body = urlSearchParams.toString()
    
        var headers = new Headers();
        headers.append('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    
        return this.http
            .post(this.loginUrl, body, { headers: headers })
            .map(response => response.json());
    }
    

    【讨论】:

    • 嗨 Ranakrunal,当我点击 post API 时,我会得到这样的 HTML 标签的响应 {"_body":"
      \"} 所以你能帮帮我吗。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多