html - Cum să afișezi o imagine gif într-o aplicație mobilă Angular


Am un component spinner.component.html astfel:

<div *ngIf="show">
    <img [src]="loadingImage" *ngIf="loadingImage" width="120px" height="120px"/>
</div>

Și un controler spinner.component.ts ca acesta:

export class SpinnerComponent implements OnInit, OnDestroy {

  @Input() loadingImage: string;
  @Input() show: boolean = false;
  @Input() name: string;

  constructor(
    private spinnerService: SpinnerService
  ) { }

  ngOnInit() {
    if (!this.name) 
      throw new Error("Spinner must have a 'name' attribute.");

    this.spinnerService.register(this);
  }

  ngOnDestroy() {
    this.spinnerService.unregister(this);
  }
}

Și în final am un serviciu de spinner spinner.service.ts:

export class SpinnerService {

  private spinnerCache = new Set<SpinnerComponent>();

  constructor() { }

  register(spinner: SpinnerComponent) {
    this.spinnerCache.add(spinner);
  }

  unregister(spinnerToRemove: SpinnerComponent) {
    this.spinnerCache.forEach(spinner => {
      if (spinner === spinnerToRemove) {
        this.spinnerCache.delete(spinner);
      }
    });
  }

  show(spinnerName: string) {
    this.spinnerCache.forEach(spinner => {
      if (spinner.name === spinnerName) {
        spinner.show = true;
      }
    });
  }

  hide(spinnerName: string) {
    this.spinnerCache.forEach(spinner => {
      if (spinner.name === spinnerName) {
          spinner.show = false;
        }
      });
  }
}

În app.component.html îmi declar spinner-ul:

<spinner name="mSpinner" loadingImage="assets/spinner.gif"></spinner>

Acesta funcționează perfect în browserele de pe desktop, dar când încerc pe browserul de pe mobil nu pot vedea gif-ul, în schimb asta este ceea ce obțin:

Dar dacă scriu atributul src direct în tag-ul imaginii astfel:

<img src="assets/spinner.gif" *ngIf="loadingImage" width="120px" height="120px"/>

funcționează atât în browserele de desktop, cât și în cele mobile. Care este motivul acestui comportament?