【发布时间】:2018-12-30 21:46:50
【问题描述】:
单击按钮时,应克隆类为emails 的元素。
HTML:
<form id="add-user">
<div class="email-container">
<div class="emails">
<mat-form-field class="email full-width">
<input matInput class="email-field" type="email" required placeholder="E-Mail">
</mat-form-field>
</div>
</div>
<i class="material-icons icon" id="addEmailField" (click)="clone()">add_box</i>
</form>
TS:
public clone(): void {
const clone = document.querySelector('.emails').cloneNode(true); // clone the selector .emails
document.querySelector('.email-container').appendChild(clone); // append it to .email-container
}
克隆部分有效,但问题是克隆元素的占位符。如果我在文本字段中输入内容,它不会消失。
这就是我在克隆元素中键入时的样子:
我做错了什么? 运行并测试它here。
【问题讨论】:
-
看起来在第一个之后,您正在为每个相互重叠的输入克隆多个文本框。这可能是因为
document.querySelector('.emails').cloneNode(true);- 这将抓取所有.emails,即使您有 2、3 或 4 个 - 并将它们全部克隆。 -
建议你使用数组和
ngFor,而不是自己操作dom -
我不知道材料,但它看起来不是一个普通的占位符。这是一个在焦点上移动的标签,所以我猜它的功能是在页面加载时启动的,所以你需要寻找一种方法来重新启动新字段上的材料功能。
标签: javascript typescript angular-material angular6