当前位置: 首页 > 知识库问答 >
问题:

ngIf - else vs 两个 ngIf 条件 [已关闭]

钦永贞
2023-03-14

想改进这个问题吗 通过编辑此帖子,更新问题,以便用事实和引用来回答。

考虑以下代码示例:

<div *ngIf="condition; else elseBlock">
    <!-- markup here --> 
</div>
<ng-template #elseBlock>
     <div>
         <!-- additional markup here -->
     </div> 
</ng-template>

实现相同功能的另一种方法是:

<div *ngIf="condition">
    <!-- markup here --> 
</div>
<div *ngIf="!condition">
     <!-- additional markup here -->
</div>

想知道这两种方式应该用哪一种的具体原因,为什么?

共有2个答案

於鸿羲
2023-03-14

第一种解决方案更好。虽然两者实现的是相同的东西,但前者更清晰,更容易从逻辑上理解。

对于第一种解决方案,您只需进行一次检查。这是一个很好的解决方案,因为:

    < li >评估病情需要时间。 < li >通过使用else,您只需检查一次。在第二个解决方案中,您检查是否满足某个条件(这需要时间),然后检查< I >相同条件的not是否满足。 < li >使用else允许您在两个条件都不满足的情况下执行操作。

编辑:参见@toazaburo的回答,它解决了不安全问题。

柳弘方
2023-03-14

使用 else 可以避免两次编写条件,这可能是错误的根源,所以我会优先使用它。如果您愿意,您还可以将 else 模板放在模板底部,这将使模板更易于阅读。

如果您使用async管道展开可观察对象,那么编写起来会容易得多

<div *ngIf="myItems$ | async as myItems; else noItemsYet">

而不是添加另一个<code>

那些投票结束这个问题的人是被误导的。人们可能对某件事有不同意见,这并不意味着没有值得提出的有效观点。

如果使用else只是一个偏好问题,我怀疑Angular开发人员会像他们那样优先考虑Angular4。

正如@Ishnark指出的,这也可能会影响性能。

 类似资料:
  • 这两个语法都是完全有效的,对于语法1,您可以像这里描述的那样更进一步,但是对于使用其中一个和另一个有什么性能/最佳实践建议吗?

  • 问题内容: 和之间有什么实际区别?这两个指令都操作DOM,但更为冗长。除非在这种情况下需要非常大的东西,否则通常使用这种情况吗? 有一种情况,并不能直接替代品?还是它们唯一的实际区别在于语法? 问题答案: 我相信,MicheleTilley完全正确,特别是指出/的对比。还有另外一个需要注意的区别:将 原位 分离并重新附加元素。但是具有外部包含元素,您可以在其上声明主要指令及其条件:。该外部元素中的

  • 在模板中的对应元素显示后,获取的最优雅的方法是什么? 下面是一个例子。还提供柱塞。 component.template.html: component.component.ts: 我有一个默认情况下隐藏其内容的组件。当有人调用方法时,它将变得可见。但是,在Angular 2更改检测完成之前,我不能引用。我通常将所有必需的操作包装到中,如上图所示。有没有更正确的方法? 我知道有一个带有的选项,但是

  • 下面是我的代码示例: (如果选择了两个,则显示一个输入) https://stackblitz.com/edit/angular-fqkfyx 你好,瓦伦丁

  • 如何在else下用多个语句写ngIf?我有一种感觉,我正在做一些愚蠢的事情,但惊讶地发现除了我之外,没有其他人在这种情况下。*ngIf=col!= ' actionselse显示操作;iwouldlietoaddanotherassignmenthere; 仅仅因为一个人不理解这个问题并不意味着这个问题不清楚。这就是我离开的原因,所以最后一次,停止标记你不理解的问题,让理解的人回答或忽略它。