2 回答
TA贡献1966条经验 获得超4个赞
深谋远虑
回想起来,这是一个非常有趣的问题。实际问题<div *ngIf="condition; else elseBlock">
按预期工作。但也确实如此<div *ngIf="condition else elseBlock">
,那么给出什么呢?实际上需要分号是什么?
解释
事实证明,定义如何扩展的Angular微语法规范非常灵活,并且最初难以掌握。解释的要点是微语法定义的形式*ngIf
[ngIf]
*:prefix="( :let | :expression ) (';' | ',')? ( :let | :as | :keyExp )*"
:prefix
: HTML 属性键。
:key
: HTML 属性键。
:local
:模板中使用的局部变量名称。
:export
:指令在给定名称下导出的值。
:experession
:标准角度表达式
:keyExp = :key ":"? :expression ("as" :local)? ";"?
:let = "let" :local "=" :export ";"?
:as = :export "as" :local ";"?
看来分号是可选的。另外,在我们的例子中,else
块是一个关键表达式,可以看出冒号是可选的,我们目前没有使用。所以理论上我们也可以使用<div *ngIf="condition else: elseBlock">
. 因此,ngFor
也可以在没有任何分号的情况下使用。所以下面的块也可以工作
<div *ngFor="let n of arr let i=index let f=first let l=last"> {{ n }} </div>
工作示例:Stackblitz
TA贡献1876条经验 获得超6个赞
仅当您使用“else”块时才需要分号。因此, <div *ngIf="condition">
(不带分号)是不使用“else”时的规范形式,但<div *ngIf="condition;">
(带分号)也是有效的,并且<div *ngIf="condition; else elseBlock">
是使用“else”时所需的形式。
- 2 回答
- 0 关注
- 147 浏览
添加回答
举报