angular - 这是 ng-container 的正确用法吗?
问题描述
我有一个Product
带有子组件的ShareButton
组件:
<app-product>
<app-share-button (click)="click($event)"></app-share-button>
</app-product>
当我单击 时,它会通过: )`ShareButton
将数据返回给父组件: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 中提供一个元素,您可以对它进行有角度的处理,但实际上并没有渲染到页面上。
话虽如此,如果您的目标是让app-new
元素和app-exist
元素成为兄弟姐妹,那么这绝对是正确的用法。
但是让我指出,您最好使用ngIf of的简写符号*ngIf="condition"
。*
表示它是一个结构指令,它让 Angular 知道为内部元素使用模板。
这带来了最常见的用例ng-container
。由于结构指令可以更改其中的元素,因此每个元素只能具有其中一个。所以,当你需要有多个结构指令时,你可以用ng-container
s 嵌套它们。
推荐阅读
- android - Kotlin:从 Fragment [使用适配器] 调用时,FragmentManager 显示错误
- django - 在 Django 中合并 2 个模型(表)并在我的模板中显示
- swift - 应用程序发出 API 请求时等待/加载视图
- javascript - 减慢while循环中的for循环(Javascript)
- javascript - 包含另一个异步等待承诺的承诺 - 如何解决?
- javascript - 外部调用函数
- mule-component - 如何在dataweave 2上进行分组和映射?
- java - 寻找 ios 和 android 上下滚动直到找到元素,然后单击
- react-native - 使用自定义 bottomTab 组件时,React Navigation V5 不接收焦点参数
- mongodb - MongoDB Shell - 将新字段添加到现有字段中的所有文档