Angular Rendered2删除第一个元素

时间:2017-10-02 17:25:10

标签: angular typescript dom

在其他问题Angular4 Rendered2 remove label text on addClass method

但是在这个新的中,我无法解释为什么要删除第一个元素。

这是我添加验证消息的代码:

const input = this.Render.selectRootElement('[id="mergePassword"]');
const control = this.Render.selectRootElement('[class="form-group"]');

const errorText = this.Render.createText('error field');
const div = this.Render.createElement('div');
this.Render.appendChild(div, errorText);
this.Render.appendChild(input, div);
this.Render.addClass(input, 'text-danger');
this.Render.addClass(control, 'is-invalid');

这是演示,当你按下按钮时,输入被移除:(

https://plnkr.co/edit/x2jHrHgODw7oZJgwNlSk?p=preview

我该如何解决这个问题? (防止删除输入)

更新:

更改逻辑,而不是2 rootElement,从一个引用:

const control = this.Render.selectRootElement('[class="form-control"]');
      const errorText = this.Render.createText(error);
      const div = this.Render.createElement('div');
      this.Render.appendChild(div, errorText);
      this.Render.appendChild(this.Render.parentNode(control), div);
      this.Render.addClass(this.Render.parentNode(control), 'text-danger');
      this.Render.addClass(control, 'is-invalid');

1 个答案:

答案 0 :(得分:0)

如果您将createText的参数更改为字符串,请在UPDATE部分的此行中

const errorText = this.Render.createText('error');

输入字段和按钮之间会出现“错误”文本,输入字段仍然存在。 (在plunker中确认)