@user57765

Как отобразить фото авторизированного пользователя?

На данный момент выводятся аватарка в том случаи если она есть в БД. Но если аватара нету в БД то почемуто не выводится установленная по умолчанию аватарка (assets/img/empty_photo.png). Как это можно исправить?
<div *ngIf="authTokenService.currentUserData">
    <img class="img" [src]="authTokenService.currentUserData ? authTokenService.currentUserData.user_photo : 'assets/img/empty_photo.png'" name="user_photo">
</div>
  • Вопрос задан
  • 65 просмотров
Решения вопроса 1
<div *ngIf="authTokenService.currentUserData">

Возможно там (currentUserData) вообще ничего не приходит. Проверьте.

почемуто не выводится установленная по умолчанию аватарка

Что говорит консоль? Путь правильно указали?

Так работает?
import { SafeUrl, DomSanitizer } from '@angular/platform-browser'

@Any()
export class Any {
	public defaultAvatarUrl: SafeUrl

	constructor(private readonly sanitizer: DomSanitizer) {
		this.defaultAvatar = this.sanitizer.bypassSecurityTrustUrl(
			'assets/img/empty_photo.png'
		)
	}
}


А вообще, наверное лучше сделать геттер:

public get userAvatar(): SafeUrl {
		return this.sanitizer.bypassSecurityTrustUrl(
			this.authTokenService.currentUserData
				? this.authTokenService.currentUserData.user_photo
				: 'assets/img/empty_photo.png'
		)
	}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Если внимательно посмотреть на код,
1) В начале стоит *ngIf="authTokenService.currentUserData"
Это значит, что блок img будет выведен только если currentUserData - есть
Теперь ниже
[src]="authTokenService.currentUserData ? authTokenService.cu ...

Это значит, если currentUserData есть будет выведено значение authTokenService.currentUserData.user_photo даже если user_photo не определено
А если currentUserData нет, то блок img не будет выведен, нет ни какого шанса что вторая часть тернарки будет выведена
Банальная ошибка в логике.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы