gpt4 book ai didi

javascript - 动态绑定(bind)图像 Angular 8

转载 作者:行者123 更新时间:2023-11-30 13:51:44 25 4
gpt4 key购买 nike

我有对象数组,我需要根据信用卡类型动态添加图像图标,

ts文件

  icon: any;

savedCreditCard =
[
{
cardExpiryDateFormat: "05/xx",
cardNumberLast: "00xx",
cardId: "xxx",
cardType: "Mastercard",
cardExpiryDate: "xx05",
paymentChannelId: 9,
cardNumberMasked: "512345XXXXXXXXXX"
},
{
cardExpiryDateFormat: "11/xx",
cardNumberLast: "58xx",
cardId: "xxx",
cardType: "Amex",
cardExpiryDate: "xx11",
paymentChannelId: 16,
cardNumberMasked: "379185XXXXXXXXX"
}
]

ngOnInit() {
this.savedCreditCard.forEach((x => {
if (x.cardType === 'Mastercard') {
this.icon = '../../assets/svg/logo-mastercard.svg';
} else if (x.cardType === 'Amex') {
this.icon = '../../assets/svg/icon-amex.svg';
}
})
);
}

在 HTML 模板上,我尝试根据信用卡类型动态绑定(bind)图像,这是我尝试过的,

html文件

    <div class="flex-float">
<div class="float-end">
<img class="select--icon" [src]="icon" />
<p class="selected--desc is-hidden-mobile-xs">
{{ selectedCard.cardType }}
</p>
</div>
</div>

问题是我只有相同的图标,尽管是 mastercard 或 amex,我想在 stackblitz 上重现,但它不支持静态图像,有人知道如何解决这个问题或任何建议吗?

最佳答案

只有一个 icon 变量,它在每次 forEach() 迭代时被重新分配一个新的图标路径。并且这个icon用于所有卡片,因此只显示一张图像。

方法一:

你可以有一个像这样的图标对象

var icons = {
'Mastercard': '../../assets/svg/logo-mastercard.svg',
'Amex': '../../assets/svg/icon-amex.svg'
};

在 HTML 中,只需根据卡片类型使用适当的图标即可。

<div class="flex-float">
<div class="float-end">
<img class="select--icon" [src]="icons[selectedCard.cardType]" />
<p class="selected--desc is-hidden-mobile-xs">
{{ selectedCard.cardType }}
</p>
</div>
</div>

无需对 ngOnInit() 中的 saveCreditCard 数组进行任何更改。

方法 2:

如果要在saveCreditCard 中的每个对象上存储图标,则Array.map()可以使用。

ngOnInit() 中,为每张信用卡分配图标。

ngOnInit() {
this.savedCreditCard = this.savedCreditCard.map(card => {
let icon;
if (card.cardType === 'Mastercard') {
icon = '../../assets/svg/logo-mastercard.svg';
} else if (card.cardType === 'Amex') {
icon = '../../assets/svg/icon-amex.svg';
}

return {...card, "icon": icon};
});
}

然后在 HTML 中,使用卡片的 icon 属性。

<div class="flex-float">
<div class="float-end">
<img class="select--icon" [src]="selectedCard.icon" />
<p class="selected--desc is-hidden-mobile-xs">
{{ selectedCard.cardType }}
</p>
</div>
</div>

关于javascript - 动态绑定(bind)图像 Angular 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58108587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com