可见性:隐藏在 Angular 2 中

Posted

技术标签:

【中文标题】可见性:隐藏在 Angular 2 中【英文标题】:visibility:hidden in Angular 2 【发布时间】:2017-12-30 02:37:45 【问题描述】:

在角度 2 中实现元素不可见的建议方法是什么(visibility:hidden 不显示元素但保持其空间被占用)?它有一个[hide] 指令,但它似乎类似于display:none

【问题讨论】:

opacity:0 woudl 似乎是一种选择......不是吗? 【参考方案1】:

您可以使用style binding 设置visibility 样式属性:

<div [style.visibility]="'hidden'"></div>
<div [style.visibility]="isDivVisible ? 'visible' : 'hidden'"></div>

this plunker 中显示了一个示例。

编辑: 您可以制定一个指令以使这更容易: https://stackblitz.com/edit/angular-ivy-6sac33?file=src%2Fapp%2Fhide-element.directive.ts

【讨论】:

【参考方案2】:

您还可以使用 Angular 的功能来动态检查您的属性并使用 NgStyle 刷新 DOM:

&lt;div [ngStyle]="'visibility':isDivVisible ? 'visible' : 'hidden'"&gt;&lt;/div&gt;

【讨论】:

【参考方案3】:

试试ngShow。

<div ng-show="myValue"></div>

从控制器中隐藏元素:

$scope.myValue = false

【讨论】:

这是为 AngularJS (Angular 1) 准备的。 “Angular”是指 Angular 2(及以下版本),它们完全不同。这个问题专门针对 Angular 2+ 而ngShow相当于display:none而不是visibility:hidden【参考方案4】:

如果你不希望你的组件在 DOM 中呈现,你可以使用 ngIf。

如果您希望该组件被渲染但不显示,您可以根据 NgClass 的条件将显示设置为无。但请注意,这可能会导致一些错误行为尝试始终使用 ngIf

【讨论】:

我更新了我的问题,我希望组件不可见,但我仍然希望它占用空间。 您需要visibility:hidden 才能占用空间。 display:none 将使页面表现得像从未渲染过一样。

以上是关于可见性:隐藏在 Angular 2 中的主要内容,如果未能解决你的问题,请参考以下文章

flexbox 中的可见性:隐藏和可见性:折叠有啥区别?

IE10:“可见性:可见”在“可见性:隐藏”元素的伪元素之前

如何隐藏单个 PivotItem 的可见性

C# 窗口可见性,折叠和隐藏

动态表单Angular2。条件字段可见性

.btn btn-primary * 可见性:隐藏; 不工作[重复]