ng-template
顾名思义,ng-template
是一个模板元素,通常与结构化指令ng-if
, ng-for
, ng-switch
及模板变量配合使用.
ng-template配合ng-if
1 | <ng-template [ngIf]="true"> |
在实际编程中,我们一般不用上面的写法,而是采用指令的简写形式,也就是用*ngIf
代替[ngIf]
。
1 | <div *ngIf="true">Hello, world!</div> |
这段代码编译后的结果和第一段代码是相同的。关于指令的简写形式,请参考这篇。注意:在ng-template
上使用指令的简写形式是无效的,必须使用属性绑定的方式,下面的代码无法正常工作。
1 | <ng-template *ngIf="true"> |
作为elseBlock使用
假设有如下需求,当condition
为true
时,显示Hello, world!
,否则显示Goodbye, world!
, 该如何实现呢?
我们可以在ngIf
指令后面添加else
关键字,然后在else
后面添加一个模板引用变量,然后定义一个ng-template
并用该模版变量标识之,如下所示:
1 | <div *ngIf="condition else otherTemplate">Hello, world!</div> |
如果你使用的是Angular17及以上版本,那么你可以使用built-in control flow语法。
1 | @if(condition) { |
If-then-else
如果两个分支对应的模板都很大,那么可以采用这种方式,使结构更清晰,代码更易读。
1 | <div *ngIf="condition; then thenBlock else elseBlock"></div> |
同样的,如果你使用的是Angular17及以上版本,那么你可以使用built-in control flow语法。
1 | @if(condition) { |
看到了吗,built-in control flow语法的可读性更强,更符合人类的思维方式。