javascript 在Angular中是否有一个类似Vue的`v-show`的东西,这样组件就被隐藏了,但仍然在DOM中?[副本]

huwehgph  于 2023-06-04  发布在  Java
关注(0)|答案(1)|浏览(279)

此问题已在此处有答案

What is the equivalent of ngShow and ngHide in Angular 2+?(23答案)
昨天关门了。
在某些情况下,最好在DOM中保留一个隐藏组件。在Vue中,除了v-if之外还有v-show。但在Angular中,我没有找到一个等价物?所以最好的解决方案是使用s.th.比如[ngStyle]="{ 'display': showMe ? 'block' : 'none' }"
编辑:我也可以设置hidden attribute,这应该有一个非常相似的效果,例如。[hidden]="!showMe"
为什么Vue.js包含v-show而不是简单地使用:hidden

wfveoks0

wfveoks01#

v-show是添加style="display: none"的简单sugar语法。虽然我不知道angular中内置了任何类似的东西,但构建自己的指令并实现相同的结果(代码未测试)是很简单的:

@Directive({
  selector: 'appHidden',
})
class HiddenDirective {
 @Input('appHidden')
 isHidden: boolean = false;

 @HostBinding('style.display')
 get displayStyle() {
   return this.isHidden ? 'none' : undefined;
 }
}

用途:

<div [appHidden]="shouldBeHidden"></div>

相关问题