angular - 如何在按钮单击时多次创建现有组件 - Angular
问题描述
我试图在单击按钮时多次创建组件。该按钮位于父组件中,当单击“添加更多”时,它将创建子组件的次数与单击“添加更多”的次数相同。默认情况下,只有一个子组件显示,然后当我们单击按钮时,将在现有子组件之后添加相同的子组件。
如何在按钮单击时多次创建现有子组件?
我应该使用组件工厂还是只使用普通的 forLoop?
HTML - 子组件
<input type="text />
HTML - 父组件
<child-component #childCom></child-component>
<button (click)="addMore()">Add more</button>
TS
@ViewChild('childCom') childCom: ElementRef;
addMore(){
console.log("child component");
}
解决方案
这个想法
使用 for 循环多次显示组件。
数组
每次您要添加新项目时,我们都会将另一个项目添加到数组中(例如,数组可以是0
, 1
,2
或者您可以在其中保留一些状态 - 这取决于您的应用程序)。
public items = []
public add () {
this.items = [...this.items, this.items.length]
}
模板
add
当您单击按钮时,我们会从模板中调用该方法。
<button (click)="add()">Add</button>
我们遍历数组并多次创建组件。
<child-component *ngFor="let item of items"></child-component>
流量
当用户点击按钮时,方法add
被调用。这使得数组的长度加一。ngFor
注意到这一点并呈现另一个项目。
推荐阅读
- python - __len__ 定义下的打印语句导致控制台输出不断重复
- python - 如何从python中的列表中删除空格和特殊字符
- angular - Heroku 阻止直接访问 Angular 中的子路由
- ios - NS_ASSUME_NONNULL_BEGIN 和 FOUNDATION_EXPORT 的未知类型
- javascript - 如何返回 JSON Azure 功能应用程序 httptrigger?
- amazon-web-services - 是否有 dynamoDB 模式的图,例如 RDBMS 的 ER 图?
- typescript - 基于类的 Vue 组件不适用于 v-model 和 vuex
- python - 有没有办法停止从资源组到资源的继承,并使用 python 对 Azure 的虚拟机磁盘应用只读锁?
- visual-studio-code - 即使以管理员身份,Visual Studio Code 也无法保存 ReadOnly 文件
- java - 如何使用 Antlr 在 Java 中获取 .txt 输入文件的解析树