使用ngStyle,您是否能够向多个属性添加多个条件?
我需要根据某个JSON值更改文本颜色和背景颜色。
背景信息:
我正在做一个类似于浏览器的标签栏。每个标签都有一个 * 标题/标题 * 和 * 子标题 *。子标题的样式根据标签/数组数据而改变。标签栏的设计如下所示:
我的重点是副标题风格,规划和FPE的。
下面是我的制表符数组的外观:
tabs = [
{
flightName: "Flight 1",
stagePhase: "PRE-FPE",
control: "View Only"
},
{
flightName: "Flight 2",
stagePhase: "PLANNING",
control: "Plan and Load"
},
{
flightName: "Flight 3",
stagePhase: "PLANNING",
control: "Closeout"
},
{
flightName: "Flight 4",
stagePhase: "FPE",
control: "View Only"
}
];
如果tabs.tab.control
属性为"View Only"
,则background-color
将是透明的,"Plan and Load"
:浅灰色和"Closeout"
:白色,然后***也将文本颜色***更改为***透明***。
因此,对于单独的背景颜色,ngStyle函数可以如下所示:(打印稿)
getBgColor(control) {
switch (control) {
case 'View Only':
return '#ffcccc00';
case 'Editing':
return '#cce6ff44';
case 'Closeout':
return 'white';
}
}
下面是HTML:(关注ngStyle)
<ul class="tabs" id="tabsList" *ngFor="let tab of tabs">
<li>
<a href="javascript:void(0)" class="flight-title"> {{ tab.flightName }} </a>
<a [ngStyle]="{'background': getBackColor(tab.control) }" class="stage"> {{ tab.stagePhase }}
</a>
<em (click)="closeTab(tabs.indexOf(tab))" class="close-icon"> </em>
</li>
</ul>
问题:
现在,对于第二个<a>
标记,我希望有两个函数:getBgColor()和getTxtColor()。但是简单地添加另一个函数是不起作用的:
<a [ngStyle]="{'background': getBgColor(tab.control)}, {'color': getTxtColor(tab.control) }" class="stage"> {{ tab.stagePhase }}
</a>
具有额外功能:
getTxtColor(control) {
switch (control) {
case 'View Only':
return 'white';
case 'Plan and Load':
return 'white';
case 'Closeout':
return 'ffcccc00';
}
}
我不能同时执行这两个函数,并且需要返回它们,我有什么选择?
1条答案
按热度按时间huwehgph1#
[ngStyle]接纳一个对象,因此您函数可以返回一个具有属性“color”和“background”的对象。
请注意,如果属性具有
-
,则使用引号顺便说一句,为什么不添加一个属性“样式”到您的标签?