[英]How i can return to my template a value based in a typescript decision?
我有一項服務返回 JSON ,其屬性名為name
。
我在我的模板中的這個 JSON 中做一個*ngFor
並基於name
屬性,我需要顯示一個特定的材料圖標。
我嘗試創建一個接收名稱並返回特定圖標的 function getIcon()
:
TS:
getIcon(name: string): string {
if (name === 'h01') {
return 'home'
}
else if (name === 'c30') {
return 'clipboard'
}
}
模板:
<mat-icon aria-hidden="false">{{ getIcon(myJson.name) }}</mat-icon>
但是每次我在我的屏幕上做一個動作,例如點擊一個按鈕,這個 function 被再次調用幾次,所以,我正在尋找是否有更好的方法來做到這一點。
您可以使用 Angular管道解決問題
src/app/pipes/icon-name.ts
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'iconName',
pure: false // detect object change
})
export class IconNamePipe implements PipeTransform {
transform(value: string, fallback: string = ''): string {
if (name === 'h01') {
return 'home';
}
else if (name === 'c30') {
return 'clipboard';
}
return fallback;
}
}
模板
<mat-icon aria-hidden="false">{{ myJson.name | iconName: 'default-icon' }}</mat-icon>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.