Данные из get to Global Variable - PullRequest
0 голосов
/ 11 мая 2018

Прежде всего я хочу извиниться за мой бедный английский, я пытаюсь решить это самостоятельно в течение нескольких дней, и я не могу, мне действительно нужно решить это для школьного проекта. У меня есть переменная с именем «myAccountData», я пытаюсь поместить результат запроса GET HTTP, но он не работает, вот мой код: Page.ts

import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { NativeStorage } from '@ionic-native/native-storage';
import { EditaccountPage } from '../editaccount/editaccount';
import { AuthServiceProvider } from '../../providers/auth-service/auth-service';
import { Observable } from 'rxjs/Observable';
/**
 * Generated class for the MyaccountPage page.
 *
 * See https://ionicframework.com/docs/components/#navigation for more info on
 * Ionic pages and navigation.
 */

@IonicPage()

@Component({
  selector: 'page-myaccount',
  templateUrl: 'myaccount.html',
})
export class MyaccountPage {


  public myAccountData;
  constructor(public navCtrl: NavController, public navParams: NavParams, private nativeStorage: NativeStorage,  public authServiceProvider: AuthServiceProvider) {

  }

  setmyAccountData(data){
    this.myAccountData=this.authServiceProvider.getData("userbyid/40").subscribe( myData => {
      this.myAccountData=myData;
    });
  }
  gotoEdit(){
    this.navCtrl.push(EditaccountPage);

  }

}

authServiceProvider.ts:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import 'rxjs/add/operator/toPromise';
import { Observable } from 'rxjs/Observable';
let apiUrl = "http://192.168.1.2/api/v1/"
/*
  Generated class for the AuthServiceProvider provider. 

  See https://angular.io/guide/dependency-injection for more info on providers
  and Angular DI.
*/
@Injectable()
export class AuthServiceProvider { 

  constructor(public http: HttpClient) {
    console.log('Hello AuthServiceProvider Provider');
  }

  public async postData(credentials, type): Promise<any> {

    await this.http.post(apiUrl + type, JSON.stringify(credentials)).toPromise();
}
  public getData(type): Observable<any> {

    return this.http.get(apiUrl + type);


  }

}

Когда я запускаю "http://192.168.1.2/api/v1/userbyid/40" на почтальоне, вот что я получаю: {"id":"40","firstname":"Kebbab","lastname":"Walid","email":"walid@kebbab.fr","username":"walid","password":"a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3","sexe":"","birth":"2018-04-11","telephone":"0","type":"ouvrier","emailverified":"0"} Но на page.html, если я использую {{myAccountData.firstname}}, он ничего не показывает Журнал ошибок:

ERROR Error: Uncaught (in promise): TypeError: _co.myAccountData is undefined
View_MyaccountPage_0/<@ng:///AppModule/MyaccountPage.ngfactory.js:128:13
updateRenderer@http://localhost:8100/build/vendor.js:14342:20
checkAndUpdateView@http://localhost:8100/build/vendor.js:13866:5
callViewAction@http://localhost:8100/build/vendor.js:14211:21
execComponentViewsAction@http://localhost:8100/build/vendor.js:14143:13
checkAndUpdateView@http://localhost:8100/build/vendor.js:13867:5
ViewRef_.prototype.detectChanges@http://localhost:8100/build/vendor.js:11653:9
NavControllerBase.prototype._viewAttachToDOM@http://localhost:8100/build/vendor.js:51117:9
Tab.prototype._viewAttachToDOM@http://localhost:8100/build/vendor.js:77128:9
NavControllerBase.prototype._transition@http://localhost:8100/build/vendor.js:51197:13
NavControllerBase.prototype._nextTrns/<@http://localhost:8100/build/vendor.js:50918:40
F</l</t.prototype.invoke@http://localhost:8100/build/polyfills.js:3:14974
onInvoke@http://localhost:8100/build/vendor.js:4982:24
F</l</t.prototype.invoke@http://localhost:8100/build/polyfills.js:3:14901
F</c</r.prototype.run@http://localhost:8100/build/polyfills.js:3:10124
f/<@http://localhost:8100/build/polyfills.js:3:20240
F</l</t.prototype.invokeTask@http://localhost:8100/build/polyfills.js:3:15649
onInvokeTask@http://localhost:8100/build/vendor.js:4973:24
F</l</t.prototype.invokeTask@http://localhost:8100/build/polyfills.js:3:15562
F</c</r.prototype.runTask@http://localhost:8100/build/polyfills.js:3:10815
o@http://localhost:8100/build/polyfills.js:3:7887
F</h</e.invokeTask@http://localhost:8100/build/polyfills.js:3:16823
p@http://localhost:8100/build/polyfills.js:2:27646
v@http://localhost:8100/build/polyfills.js:2:27893

Stack trace:
c@http://localhost:8100/build/polyfills.js:3:19752
c@http://localhost:8100/build/polyfills.js:3:19461
f/<@http://localhost:8100/build/polyfills.js:3:20233
F</l</t.prototype.invokeTask@http://localhost:8100/build/polyfills.js:3:15649
onInvokeTask@http://localhost:8100/build/vendor.js:4973:24
F</l</t.prototype.invokeTask@http://localhost:8100/build/polyfills.js:3:15562
F</c</r.prototype.runTask@http://localhost:8100/build/polyfills.js:3:10815
o@http://localhost:8100/build/polyfills.js:3:7887
F</h</e.invokeTask@http://localhost:8100/build/polyfills.js:3:16823
p@http://localhost:8100/build/polyfills.js:2:27646
v@http://localhost:8100/build/polyfills.js:2:27893
 core.js:1350

1 Ответ

0 голосов
/ 11 мая 2018

В моем page.html я использую {{myAccountData? .Firstname}} вместо {{myAccountData.firstname}}, и это сработало

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...