I am trying to make use of *ngIf to display an existing profile photo or a random avatar pic in case the profile photo URL is not existing in the database.
Rendering from [src] within an ng-template does not work.
I already tried to use src instead of [src] and I tried without using the ion-card. It seems the issue is a conflict between *ngIf / ng-template and the rendering of the ion-thumbnail, ion-avatar or img
Can somebody please explain what I am doing wrong here?
I really appreciate your comments & help!
As explanation some code examples here:
<!-- working smoothly -->
<ion-item><ion-thumbnail><img [src]="(profileData | async)?.profilePhotoUrl"></ion-thumbnail></ion-item>
<!-- working smoothly -->
<ion-card>
<ion-card-header>HELLO WORLD</ion-card-header>
<ion-card-content><ion-item><ion-thumbnail><img [src]="(profileData | async)?.profilePhotoUrl"></ion-thumbnail></ion-item>
<p class="placeholdertext" text-wrap>You can change your profile photo at any time.</p>
<button ion-button outline item-end (click)="photoUpload()">Change</button>
</ion-card-content>
</ion-card>
<!-- not working / img does not get rendered -->
<div *ngIf="(profileData | async)?.profilePhotoUrl; then ProfilePhoto else noProfilePhoto">
</div>
<ng-template #ProfilePhoto>
<ion-card>
<ion-card-header>HELLO WORLD</ion-card-header>
<ion-card-content><ion-item><ion-thumbnail><img [src]="(profileData | async)?.profilePhotoUrl"></ion-thumbnail></ion-item>
<p class="placeholdertext" text-wrap>You can change your profile photo at any time.</p>
<button ion-button outline item-end (click)="photoUpload()">Change</button>
</ion-card-content>
</ion-card>
</ng-template>
<ng-template #noProfilePhoto>
<ion-card>
<ion-card-header>HELLO WORLD</ion-card-header>
<ion-card-content><ion-thumbnail><img src="https://api.adorable.io/avatars/200/{{(user | async)?.uid}}@adorable.png"></ion-thumbnail>
<h2>No Profile Photo</h2>
<p text-wrap class="placeholdertext">Please upload a profile photo.</p>
<button ion-button outline item-end (click)="photoUpload()">Upload</button>
</ion-card-content>
</ion-card>
</ng-template>
My environment:
cli packages:
@ionic/cli-utils : 1.19.2
ionic (Ionic CLI) : 3.20.0
global packages:
cordova (Cordova CLI) : 7.1.0
local packages:
@ionic/app-scripts : 3.1.9
Cordova Platforms : android 6.2.3 ios 4.4.0
Ionic Framework : ionic-angular 3.9.2
System:
Node : v8.6.0
npm : 6.0.1
OS : macOS High Sierra
Xcode : Xcode 9.4.1 Build version 9F2000
Environment Variables:
ANDROID_HOME : not set
Misc:
backend : pro