想改进这个问题吗 通过编辑此帖子,更新问题,以便用事实和引用来回答。
考虑以下代码示例:
<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>
想知道这两种方式应该用哪一种的具体原因,为什么?
第一种解决方案更好。虽然两者实现的是相同的东西,但前者更清晰,更容易从逻辑上理解。
对于第一种解决方案,您只需进行一次检查。这是一个很好的解决方案,因为:
编辑:参见@toazaburo的回答,它解决了不安全问题。
使用 else 可以避免两次编写条件,这可能是错误的根源,所以我会优先使用它。如果您愿意,您还可以将 else 模板放在模板底部,这将使模板更易于阅读。
如果您使用async
管道展开可观察对象,那么编写起来会容易得多
<div *ngIf="myItems$ | async as myItems; else noItemsYet">
而不是添加另一个<code>
那些投票结束这个问题的人是被误导的。人们可能对某件事有不同意见,这并不意味着没有值得提出的有效观点。
如果使用else
只是一个偏好问题,我怀疑Angular开发人员会像他们那样优先考虑Angular4。
正如@Ishnark指出的,这也可能会影响性能。
HTML
这两个语法都是完全有效的,对于语法1,您可以像这里描述的那样更进一步,但是对于使用其中一个和另一个有什么性能/最佳实践建议吗?
问题内容: 和之间有什么实际区别?这两个指令都操作DOM,但更为冗长。除非在这种情况下需要非常大的东西,否则通常使用这种情况吗? 有一种情况,并不能直接替代品?还是它们唯一的实际区别在于语法? 问题答案: 我相信,MicheleTilley完全正确,特别是指出/的对比。还有另外一个需要注意的区别:将 原位 分离并重新附加元素。但是具有外部包含元素,您可以在其上声明主要指令及其条件:。该外部元素中的
在模板中的对应元素显示后,获取的最优雅的方法是什么? 下面是一个例子。还提供柱塞。 component.template.html: component.component.ts: 我有一个默认情况下隐藏其内容的组件。当有人调用方法时,它将变得可见。但是,在Angular 2更改检测完成之前,我不能引用。我通常将所有必需的操作包装到中,如上图所示。有没有更正确的方法? 我知道有一个带有的选项,但是
下面是我的代码示例: (如果选择了两个,则显示一个输入) https://stackblitz.com/edit/angular-fqkfyx 你好,瓦伦丁
如何在else下用多个语句写ngIf?我有一种感觉,我正在做一些愚蠢的事情,但惊讶地发现除了我之外,没有其他人在这种情况下。*ngIf=col!= ' actionselse显示操作;iwouldlietoaddanotherassignmenthere; 仅仅因为一个人不理解这个问题并不意味着这个问题不清楚。这就是我离开的原因,所以最后一次,停止标记你不理解的问题,让理解的人回答或忽略它。