Angular V17 / V18:@if 与 *ngIf 的前景 – *ngIf 将来会被弃用吗?

问题描述 投票:0回答:1

在新版本的 Angular V17 中,

@if
指令可以用来替代
ng-container
,这太棒了。不过,有时候
*ngIf
更简洁,比如判断是否显示按钮时:

<button *ngIf="loaded">OK</button>

所以我想问一下,

*ngIf
的前景如何? Angular 会在未来的版本中完全放弃
*ngIf
吗?

我们现在是否应该将

*ngIf
的所有实例替换为
@if
,即使上面的代码可能看起来不像以前那么优雅?

@if(loaded){ 
    <button>OK</button>
}
html angular if-statement angular17 angular18
1个回答
9
投票

更新:

Angular v18 现已可用,并且 控制流 稳定,所以答案是肯定的。让我们使用并享受这个新功能吧!

旧答案(角度v17):

control_flow概念在 Angular 网站中被标记为开发者预览,这意味着:

它们功能齐全且完善,但还没有准备好 在正常的折旧政策下稳定下来。

他们还有一种有效的方法从旧模板语法迁移到 Angular v17 中引入的新语法

现在让我们回到您的问题:

我们是否应该将
*ngIf
的所有实例替换为
@if

我建议等待几个月,让 Angular 团队正式指定此功能为稳定版本。一旦确认,您可以确保无需返工,特别是如果您正在从事大型项目。

Angular 会在未来的版本中完全放弃
*ngIf
吗?

虽然 Angular 团队还没有正式稳定

control_flow
,但最终的答案仍然不确定。然而,就我个人而言,我会说不。即使他们将旧语法标记为已弃用,它仍然应该可用,因为采用这种格式的应用程序很流行。此外,无需担心从旧语法迁移到新语法,因为您可以通过运行以下命令轻松完成它。

ng g @angular/core:control-flow

旁注: 通过使用

@If
,您可以摆脱使用
ng-template
,这确实是很棒的功能。看这个例子:

<div *ngIf="loggedIn; else anonymousUser">
  The user is logged in
</div>
<ng-template #anonymousUser>
  The user is not logged in
</ng-template>

使用内置的 if 语句,此条件将如下所示:

@if (loggedIn) {
  The user is logged in
} @else {
  The user is not logged in
} 
© www.soinside.com 2019 - 2024. All rights reserved.