任何使用理由:
<div *ngIf="show; else notShow">content</div>
<ng-template #notShow>other content...</ng-template>
代替:
<div *ngIf="show">content</div>
<div *ngIf="!show">other content...</div>
答案 0 :(得分:3)
纯粹是语义。这两个示例之间没有性能优势。因此,使用哪一个都没关系。这里的主要区别在于 else 语法是过程性的。您可以引用名为notShow
的组件属性,这是您在运行时创建的模板。您只是使用简写引用#notShow
在当前模板中使用<ng-template>
。
这是*ngIf
的源代码:
private _updateView() {
if (this._context.$implicit) {
if (!this._thenViewRef) {
this._viewContainer.clear();
this._elseViewRef = null;
if (this._thenTemplateRef) {
this._thenViewRef =
this._viewContainer.createEmbeddedView(this._thenTemplateRef, this._context);
}
}
} else {
if (!this._elseViewRef) {
this._viewContainer.clear();
this._thenViewRef = null;
if (this._elseTemplateRef) {
this._elseViewRef =
this._viewContainer.createEmbeddedView(this._elseTemplateRef, this._context);
}
}
}
}
this._context.$implicit
是模板中的条件表达式。
无论哪种情况,无论如何都将调用this._viewContainer.clear()
。因此,在您的示例中我看不到性能差异。