【问题标题】:Image not rendering in Angular 4图像未在 Angular 4 中呈现
【发布时间】:2017-10-25 02:34:09
【问题描述】:

目前我正在尝试使用 Firestore 作为我正在尝试创建的这个网站的后端。其中一部分是显示图像。我有 3 件物品存放在 Firestore 中。当我将它们加载到网站上时,仅显示最后 2 个图像,而第一个则不显示。我不知道这是firestore的问题还是我的编码方式问题

HTML 和类型代码用于显示图像的组件

<div class="container-fluid">
  <h3>Appliances</h3>
  <p></p>
  <p></p>
  <div class="row">
    <div class="col-12 col-md-3 col-xl-2 bd-sidebar">
    </div>
    <div class="col-12 col-md-9 col-xl-8 py-md-3 pl-md-5 bd-content">
      <div class="row">
        <div *ngFor="let appliance of appliances | async; let i = index">
          <div class="row">
            <div class="col-xs-3 px-2">
              <p><img src="{{appliance.img}}" width="200" alt=""></p>
              <p class="text-center">{{appliance.name}}</p>
            </div>
            <div class="col-xs-6 px-2">
              <p>desciption</p>
            </div>
            <div class="col-xs-3 px-4">
              <button class="btn btn-success" type="button" name="button" (click)="addToCart(i)">Add to Cart</button>
            </div>
          </div>
        </div>
      </div>
  </div>
</div>


import { Component, OnInit } from '@angular/core';
import { DataService } from '../services/data.service';
import { Appliances } from './appliances';
import { Observable } from 'rxjs/Observable';
import { FormBuilder, FormArray, FormGroup, FormControl, Validators } from '@angular/forms';

@Component({
  selector: 'app-appliances',
  templateUrl: './appliances.component.html',
  styleUrls: ['./appliances.component.css']
})
export class AppliancesComponent implements OnInit
{
  appliances: Observable<any[]>;
  applianceForm: FormGroup;
  constructor(private dataService: DataService)
  {
  }

  ngOnInit()
  {
    this.appliances = this.dataService.getStore();
  }

  addToCart(item: number)
  {
    this.dataService.addApplianceToCart(item);
  }
}

这是从 firestore 加载数据的服务

import { Injectable } from '@angular/core';
import { Food } from '../food/food';
import { Appliances } from '../appliances/appliances';
import { Goods } from '../models/goods';
import { AngularFireDatabase, AngularFireList } from 'angularfire2/database';
import { AngularFirestore, AngularFirestoreCollection, AngularFirestoreDocument } from 'angularfire2/firestore';
import { AngularFireAuth } from 'angularfire2/auth';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';

@Injectable()
export class DataService
{
  foods: Food[];
  appliances: Appliances[];
  storeCol: AngularFirestoreCollection<Goods>;
  store: Observable<Goods[]>;
  userCol: AngularFirestoreCollection<any>;
  private cart: any[];
  constructor(private afs: AngularFirestore)
  {
    this.storeCol = this.afs.collection('goods');
    this.userCol = this.afs.collection('accounts');
    this.store = this.storeCol.valueChanges();

    this.cart = [];
  }

  getStore()
  {
    return this.store;
  }

  getFoods()
  {
    return this.foods;
  }

  getAppliances()
  {
    return this.appliances;
  }

  addFoodToCart(item: number)
  {
    console.log('added');
    //this.afs.collection('accounts').doc('ani').collection('cart').add({name: this.foods[item].getName()})
    this.cart.push(this.foods[item]);
  }

  addApplianceToCart(item: number)
  {
    this.cart.push(this.appliances[item]);
  }

  getCart()
  {
    return this.cart;
  }
}

我们将不胜感激

【问题讨论】:

  • 如果图片已加载,请检查网络标签

标签: angular google-cloud-firestore


【解决方案1】:

我通常会尝试像这样使用属性绑定

<img [src]="appliance.img" [alt]="appliance.name" >

【讨论】:

  • 尝试这样做,但似乎仍然无法渲染图像
  • 它的行为不寻常,它正在正常渲染其他图像,我切换了 URL 以查看它是否有任何问题,我认为它只是没有呈现加载的第一张图像出于某种原因。
猜你喜欢
  • 2018-04-14
  • 2018-03-09
  • 2021-10-05
  • 2016-01-01
  • 2011-05-16
  • 2018-11-07
  • 2018-08-11
  • 2011-06-23
  • 2020-08-26
相关资源
最近更新 更多