【问题标题】:How to get data and display in html from firebase using angular/typescript如何使用 angular/typescript 从 firebase 获取数据并在 html 中显示
【发布时间】:2019-04-25 03:09:54
【问题描述】:

我想在我的 html 中使用 angular 显示我所有的带有描述标题和价格的帖子,我正在使用 firebase
这是我的代码

<ion-header>
    <ion-toolbar>
        <ion-buttons slot="start">
            <ion-menu-button></ion-menu-button>
        </ion-buttons>
        <ion-title>
            Medical Tourism
        </ion-title>
    </ion-toolbar>
</ion-header>

<ion-content padding>
    {{title}}
    {{desc}}
    {{price}}
</ion-content>
<ion-tabs>
    <ion-tab label="Get Card" icon="information-circle" href="tabs/(get-card:get-card)">
        <ion-router-outlet stack name="get-card"></ion-router-outlet>
    </ion-tab>
</ion-tabs>

当我 console.log() 我得到了所有我需要的帖子,但是当我在 html 上得到它时,只有第一个带有描述标题和价格的帖子。
但是在控制台中我明白了

import { Component, OnInit, ViewChild } from '@angular/core';
import * as firebase from 'firebase/app';
import { AngularFireDatabase } from 'angularfire2/database';

@Component({
    selector: 'app-medtour',
    templateUrl: './medtour.page.html',
    styleUrls: ['./medtour.page.scss'],
})
export class MedtourPage implements OnInit {

    title: any;
    desc: any;
    price: any;

    constructor(public db: AngularFireDatabase) {

        firebase.database().ref().child("medtour_posts/").on('value', (shapshot) => {
            shapshot.forEach((child) => {
                this.title = child.val().title;
                this.desc = child.val().description;
                this.price = child.val().price;

                console.log(this.title,this.desc,this.price);
            })
        })
    }

    ngOnInit() {}



}

【问题讨论】:

    标签: angular typescript firebase ionic-framework firebase-realtime-database


    【解决方案1】:

    你的 console.log 在 for each 循环中,这就是它每次都被打印的原因。但是您每次都将值分配给同一个变量。它被覆盖。您需要一个数组或多个变量来显示全部

    export class MedtourPage implements OnInit {
    
     childs: [];
    
        constructor(public db: AngularFireDatabase) {
    
    firebase.database().ref().child("medtour_posts/").on('value', (shapshot) => {
          shapshot.forEach((child) => {
           this.childs.push(
            {title:child.val().title),
             desc:child.val().description),
             price:child.val().price)};
         })
      })
    }
    
    
    
    
    <ion-header>
    <ion-toolbar>
        <ion-buttons slot="start">
            <ion-menu-button></ion-menu-button>
        </ion-buttons>
        <ion-title>
            Medical Tourism
        </ion-title>
    </ion-toolbar>
    </ion-header>
    <ion-content padding *ngFor="let child in childs">
        {{child.title}}
        {{child.desc}}
        {{child.price}}
    </ion-content>
    <ion-tabs>
    <ion-tab label="Get Card" icon="information-circle" href="tabs/(get-card:get-card)">
        <ion-router-outlet stack name="get-card"></ion-router-outlet>
    </ion-tab>
    

    【讨论】:

    • 谢谢。请你能告诉我我怎样才能做到这一点?
    • 我稍微编辑了我的答案。它不是最佳解决方案,但应该可以工作。我建议您查找数组、javascript/typescript 的对象和 ngFor 的角度。它应该让你走上正确的轨道
    • uhhh ...它显示为空白,但在控制台中它工作正常。我认为问题出在html中......
    • 好的......现在我们做到了......但这里有一个问题是显示数据不正确。像标题描述之后的标题描述))))))不喜欢倾斜描述另一个标题和描述
    • 是的,那是因为它在一个数组后迭代数组。您需要一个包含 Object 的数组。在我们的例子中,数组 childs 在每个循环中都加载了一个对象。我再次编辑了答案。看看它是否适合你
    猜你喜欢
    • 2020-03-06
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多