【问题标题】:ionic 3 App unable to display data fetch from firebase databaseionic 3 App 无法显示从 firebase 数据库中获取的数据
【发布时间】:2017-12-07 10:54:31
【问题描述】:

我是 ionic 和 Angular 方面的新手,并在我的社会管理网站中创建登录/个人资料模块。我想在个人资料页面上显示登录的用户数据。我已经获取数据并使用 ngModel 来显示数据从firebase数据库中检索。但它没有显示,相反,我可以在控制台窗口中获取我的数据。而且我想编辑配置文件数据。所以在我点击编辑按钮后输入字段将变为可编辑,然后它会保留只读。

我的问题是关于如何在数据库检索的个人资料页面上显示该数据?谁能告诉我如何显示数据?

个人资料.html

 <form [formGroup]="authForm" (ngSubmit)="onSubmit(authForm.value)">
    <ion-item [ngClass]="{'error-border':!authForm.controls.username.valid && authForm.controls.username.touched}">
        <ion-label floating>Username</ion-label>
        <ion-input formControlName="username" type="text" [(ngModel)]="username"></ion-input>
    </ion-item>
    <ion-item *ngIf="authForm.controls.username.hasError('required') && authForm.controls.username.touched">
        <p>Sorry, field username is required!</p>
    </ion-item>
    <ion-item [ngClass]="{'error-border':!authForm.controls.flatno.valid && authForm.controls.flatno.touched}">
        <ion-label floating>Flat No</ion-label>
        <ion-input formControlName="flatno" type="text" [(ngModel)]="flatno"></ion-input>
    </ion-item>
    <ion-item *ngIf="authForm.controls.flatno.hasError('required') && authForm.controls.flatno.touched">
        <p>Sorry, field is required!</p>
    </ion-item>

    <ion-item [ngClass]="{'error-border':!authForm.controls.email.valid && authForm.controls.email.touched}">
        <ion-label floating>Email</ion-label>
        <ion-input formControlName="email" type="text" [(ngModel)]="email"></ion-input>
    </ion-item>
    <ion-item [ngClass]="{'error-border':!authForm.controls.password.valid && authForm.controls.password.touched}">
        <ion-label floating>Password</ion-label>
        <ion-input formControlName="password" type="password" [(ngModel)]="password"></ion-input>
    </ion-item>
    <ion-item [ngClass]="{'error-border':!authForm.controls.family.valid && authForm.controls.family.touched}">
        <ion-label floating>Total Family Member</ion-label>
        <ion-input formControlName="family" type="text" [(ngModel)]="family"></ion-input>
    </ion-item>
    <ion-item [ngClass]="{'error-border':!authForm.controls.vehicles.valid && authForm.controls.vehicles.touched}">
        <ion-label floating>Total Vehicles</ion-label>
        <ion-input formControlName="vehicles" type="text" [(ngModel)]="vehicles"></ion-input>
    </ion-item>
    <button ion-button full color="button"  style="margin-top: 20px;" type="submit">Save</button>
</form>

profile.ts

  ref.on('value', this.gotData,this.errData);
  gotData(data){
   console.log('data');

   var users = data.val();
   var keys = Object.keys(users);

  for(i=0; i < keys.length;i++){

     var k = keys[i];
     var sessionUser =sessionStorage.getItem("Sessioneml");

    if(users[k].email == sessionUser){
        console.log('true');
        var email = users[k].email;
        var Id = users[k].ID;
        var username = users[k].username;
        var flatno = users[k].flatno;
        var family = users[k].familyMember;
        var vehicles= users[k].parking_slot;

        console.log('user data ='+Id, username,flatno,family,vehicles);
    }
  }
}

【问题讨论】:

    标签: angular firebase firebase-realtime-database ionic3


    【解决方案1】:

    您需要为此声明全局变量。请看看这个。

        export class YOUR_PAGE_NAME{
    
          email: string = "";
          Id: string = "";
          username: string = "";
          flatno: string = "";
          family: string = "";
          vehicles: string = "";
    
        //Your constructor and other code
    
            let self = this;
            ref.on('value', function (data) {
            console.log('data');
    
            var users = data.val();
            var keys = Object.keys(users);
    
             for (i = 0; i < keys.length; i++) {
               var k = keys[i];
               var sessionUser = sessionStorage.getItem("Sessioneml");
               if (users[k].email == sessionUser) {
                console.log('true');
                self.email = users[k].email;
                self.Id = users[k].ID;
                self.username = users[k].username;
                self.flatno = users[k].flatno;
                self.family = users[k].familyMember;
                self.vehicles = users[k].parking_slot;
               }
             }
            }, function (error) {
                  //Error code goes here
            });
    }
    

    如果成功请告诉我!

    【讨论】:

    • 不工作。它给了我像“这是空的”这样的错误@DwlRathod
    • 同一个你刚刚为这个指针设置了self变量,所以也不起作用\!!
    • 能否请您添加完整的 profile.ts 代码?这会很有帮助。
    • 这些信息已经足够了。此页面上的其他内容与我的问题无关。
    • @tejaswi 更新了代码。看一看。删除你的 gotData 和 errorData,添加我在代码中所做的方式。如果仍然无法正常工作,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 2021-08-23
    • 1970-01-01
    • 2021-10-25
    • 2017-11-06
    • 1970-01-01
    • 1970-01-01
    • 2018-04-15
    • 2021-04-28
    相关资源
    最近更新 更多