#angular #ionic-framework #ionic3
#угловой #ionic-framework #ionic3
Вопрос:
Вот мой приведенный ниже код
Я делаю только, если тогда еще условие, которое я хочу выполнить, если еще, если, если условие, основанное на трех значениях, я хочу изменить изображение
<img [src]="status.getRequestStatus() == 'granted' ? 'assets/imgs/trafficlight_green.png':'assets/imgs/trafficlight_red.png' " class="image--background" >
это для if and else
условия, которое я хочу добавить if else if if
Нравится if(new){someimage}else if(new1){some image1} if(new2){some image2}
Комментарии:
1. Я думаю, что если вы используете
[(src)]="sourceProperty"
изменения, основанные на этом, и я бы определенно перенес эту логику в компонент из представления и в status.getRequestStatus(), вы можете установить свойство на основе результата..
Ответ №1:
Переместить логику в компонент.
В вашем component.html
<img [src]="someFn()" class="image--background" >
В вашем component.ts
someFn() {
let rtn = '';
if(...) {
rtn = ...
} else if (...) {
...
} else {
...
}
return rtn;
}
Ответ №2:
Вы можете использовать несколько img
тегов при условии, как показано ниже —
<img *ngIf="new" [src]="assets/imgs/trafficlight_green1.png" class="image--background">
<img *ngIf="new1" [src]="assets/imgs/trafficlight_green2.png" class="image--background">
<img *ngIf="new2" [src]="assets/imgs/trafficlight_green3.png" class="image--background">
Или используйте переменную для хранения источника изображения в вашем component.ts
, а затем привяжите его, component.html
как показано ниже —
<img [src]="imageSource" class="image--background">
Ответ №3:
Вы можете сохранить троичный оператор в шаблоне, если хотите, с потоком if else, поскольку троичный оператор может быть связан цепочкой. Это может выглядеть так.
<img [src]="'new' ? 'green.png': new1 ? 'red.png' : 'amber.png'" class="image-background">
Это будет выглядеть так
if (new)
{ 'green.png' }
else if (new1)
{ 'red.png' }
else
{ 'amber.png' } // being new2
Надеюсь, это то, что вы ищете.
Ответ №4:
попробуйте это решение, основанное на моем комментарии:
Проверьте пример на StackBlitz
Проверка выполняется на компоненте, на вашем getRequestStatus() Я использовал ngOnInit с таймаутом для изменения «динамически»
источник автоматически обновляется на основе изменения свойства источника.
Вид:
<img [(src)]="sourceImage" width="200" />
компонент:
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
name = 'Angular';
sourceImage: string;
ngOnInit() {
this.sourceImage = 'https://angular.io/assets/images/logos/angular/angular.svg';
setTimeout(()=> {
this.sourceImage = 'https://dwglogo.com/wp-content/uploads/2017/03/AngularJS_logo_004.svg';
}, 2000)
}
}