我有以下模板:
<div [hidden]="this.days.length > 0" fxLayoutAlign="center center">
<div style="font-size: 1.4em; color: #4e4e4e;">
Empty
</div>
</div>
由于某种原因,条件this.days.length > 0
不起作用。在forkJoin().subscribe({..})
之后,列表this.days
不是空的,但是上面的div
仍然没有被隐藏。
ngOnInit() {
forkJoin(
this.groupService.getData(this.groupId),
// ..
).subscribe(
data => {
// .. adding things to this.days ..
console.log(this.days.length > 0); // Prints 'true'
});
}
为什么这不起作用?
答案 0 :(得分:2)
hidden
属性设置样式:
display: none;
但是fxLayoutAlign
指令overrides it带有:
display: flex;
为了隐藏元素,您可以定义一个类样式,其中通过display
标志为!important
属性赋予更高的优先级:
.not-visible {
display: none !important;
}
并将该类有条件地应用于元素:
<div [class.not-visible]="this.days.length > 0" fxLayoutAlign="center center">
有关演示,请参见this stackblitz。
一种替代方法是使用*ngIf="!days.length"
,如PierreDuc在评论中所建议。但是,结果有些不同:当条件ngIf
为false
时,元素根本不存在于DOM中。