我不确定,如果可能的话。
<span class="nav-label second-level-text" style="margin-left: 10px;">
{{partner.name}}
<span class="badge"
*ngIf="unreadConversations.length > 0 | unreadConversationForPartner : [unreadConversations,partner.id]">
{{unreadConversations.length | unreadConversationForPartner : [unreadConversations,partner.id]}}
</span>
</span>
我有跨越这里。我正在对*ngIf
应用过滤器,并显示返回过滤器的值(这是计数)
如果从管道返回的计数大于0,我想显示样式,如果不是,则不显示样式。但是,我可以通过*ngIf and Filter
实现此目的,但如果更改Filter
的值,则*ngIf
不会更改。
例如。我在阵列中有2个项目。
第1项:长度为1,它显示跨度并完成其工作......
第2项:开始时长度为0并且不显示(这是正确的行为),但过滤器值会更改,但不会再次调用*ngIf
。
unreadConversationForPartner pipe
transform(value: any, ...args: any[]): any {
var count = 0;
var partnerId = args[0][1];
var conversations = args[0][0];
conversations.forEach(element => {
if(element.partnerId == partnerId) count++
});
return count;
}
如果提供的信息不够或不清楚,请告诉我。
答案 0 :(得分:4)
您可以使用之前介绍的as
*ngIf="unreadConversations.length > 0 | unreadConversationForPartner : [unreadConversations,partner.id] as result"
然后在其他指令或绑定中使用它
[ngStyle]="{backgroundColor: result >= 5 ? 'red' : 'blue'}"
另见https://angular.io/api/common/NgIf#storing-conditional-result-in-a-variable