这是 ng-container 的正确用法吗?
Is this the right usage of ng-container?
我有一个 Product
组件和一个子 ShareButton
组件:
<app-product>
<app-share-button (click)="click($event)"></app-share-button>
</app-product>
当我点击 ShareButton
时,它 returns 通过以下方式向父组件发送数据:click($event
)`:
public click($event) {
this.typeAction = $event.type;
}
像这样在父组件中使用ng-container
是个好主意吗:
<app-product>
<app-share-button (click)="click($event)"></app-share-button>
<ng-container [ngIf]="typeAction === 'new'">
<app-new [type]="1"></app-new>
<app-new [type]="2"></app-new>
</ng-container>
<ng-container [ngIf]="typeAction === 'new'">
<app-exist [type]="1"></app-exist>
<app-exist [type]="2"></app-exist>
</ng-container>
</app-product>
是否应该对此进行简化或者这是 ng-container
的有效用例?
只要有用,ng-container
就没有真正的错误用法。它所做的只是在 HTML 中提供一个元素,您可以对其执行 angular 操作但实际上不会呈现到页面。
也就是说,如果您的目标是让 app-new
元素和 app-exist
元素成为兄弟姐妹,这绝对是正确的用法。
但我要指出,您最好使用 ngIf of *ngIf="condition"
. The *
indicates that it is a structural directive 的 shorthand 表示法,让 angular 知道为内部元素使用模板。
这带来了 ng-container
最常见的用例。由于结构指令可以更改其中的元素,因此每个元素只能有一个。所以,当你需要有多个结构指令时,你可以用 ng-container
s.
嵌套它们
我有一个 Product
组件和一个子 ShareButton
组件:
<app-product>
<app-share-button (click)="click($event)"></app-share-button>
</app-product>
当我点击 ShareButton
时,它 returns 通过以下方式向父组件发送数据:click($event
)`:
public click($event) {
this.typeAction = $event.type;
}
像这样在父组件中使用ng-container
是个好主意吗:
<app-product>
<app-share-button (click)="click($event)"></app-share-button>
<ng-container [ngIf]="typeAction === 'new'">
<app-new [type]="1"></app-new>
<app-new [type]="2"></app-new>
</ng-container>
<ng-container [ngIf]="typeAction === 'new'">
<app-exist [type]="1"></app-exist>
<app-exist [type]="2"></app-exist>
</ng-container>
</app-product>
是否应该对此进行简化或者这是 ng-container
的有效用例?
只要有用,ng-container
就没有真正的错误用法。它所做的只是在 HTML 中提供一个元素,您可以对其执行 angular 操作但实际上不会呈现到页面。
也就是说,如果您的目标是让 app-new
元素和 app-exist
元素成为兄弟姐妹,这绝对是正确的用法。
但我要指出,您最好使用 ngIf of *ngIf="condition"
. The *
indicates that it is a structural directive 的 shorthand 表示法,让 angular 知道为内部元素使用模板。
这带来了 ng-container
最常见的用例。由于结构指令可以更改其中的元素,因此每个元素只能有一个。所以,当你需要有多个结构指令时,你可以用 ng-container
s.