Ionic Observable无法使用订阅异步/同步冲突之外的数据

时间:2018-03-24 17:18:07

标签: asynchronous ionic-framework synchronous subscribe

我整天都在搜索谷歌这个问题。我明白为什么它不起作用,但我找不到任何解决方案或其他方法来使它工作。我需要让它发挥作用。

当我浏览网址时,我已经创建了自己的API正常工作我得到了一个带有值的JSON文档。但现在我遇到了离子异步和同步问题。

Api服务

import { Injectable } from "@angular/core";
import { HttpClient } from "@angular/common/http";
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';

@Injectable()
export class ApiService {
    constructor(private _http: HttpClient) { }

    public getUserById(id: string)
    {
        return this._http.get(`mysite`);
    }

profile.ts

import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { ApiService} from '../../services/ApiService';

@IonicPage()
@Component({
  selector: 'page-profile',
  templateUrl: 'profile.html',
})
export class Profile{

  user : any;
  constructor(public navCtrl: NavController, public navParams: NavParams, private api : ApiService) {
  }

  ionViewDidLoad() {
    this.api.getUserById('test').subscribe(data => {
      this.user = data;
      console.log(this.user);
    });
    console.log(this.user);
    console.log('ionViewDidLoad ProfilePage');
    }
    }

你看到两个console.log(this.user),一个在订阅内(这个ons正在工作,我在控制台中看到了我的JSON)。订阅之外的第二个(这一个给出了一个错误的解决方案)。

在谷歌搜索后,我发现这篇文章Why it is not working解释了它为什么不起作用。但我找不到任何其他解决方法如何以正确的方式做到这一点,因为现在我不能在我的html上使用{{user.name}}(例如)。

我的问题是我应该如何解决这个问题,或者如何在Ionic中使用API​​。

0 个答案:

没有答案