加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Angular2自定义组件 – 标记为原始且未触及

发布时间:2020-12-17 08:33:43 所属栏目:安全 来源:网络整理
导读:我在Angular 2.1中有一个模板驱动的表单,包含许多标准控件( input, select等)和一个自定义控件,它本身包含多个输入元素. 我已经在自定义控件上实现了ControlValueAccessor,并且它正确地将其更改/触摸/有效值传播到父窗体. 但是..在父窗体上我有一个保存按钮,
我在Angular 2.1中有一个模板驱动的表单,包含许多标准控件(< input>,< select>等)和一个自定义控件,它本身包含多个输入元素.

我已经在自定义控件上实现了ControlValueAccessor,并且它正确地将其更改/触摸/有效值传播到父窗体.

但是..在父窗体上我有一个保存按钮,保存后我想清除脏/触摸状态(因为这会影响应用的css),如下所示:

save(myForm: NgForm) {

    myForm.form.markAsPristine();
    myForm.form.markAsUntouched();

}

这适用于顶级父窗体和自定义控件本身中的所有元素,但< input>自定义控件中的字段仍标记为已触摸/脏(并且接收预先保存的样式).

是否有一种方法可以在更改脏/触摸状态时通知自定义控件,以便它可以清除它的子< input>要匹配的元素?似乎如果< input>元素在自定义控件中,它们不会通过在父窗体上调用markAsPristine / Untouched来更新.

谢谢!

尝试像这样添加控件[‘nameOfControl’]
myForm.form.controls['nameOfControl'].markAsPristine();

上面的代码仅适用于表单控件.

以下似乎是一个很好的工作:

active = true;
  newModel() {
    this.model = new yourModel(2,'',true,'');
    this.active = false;
    setTimeout(() => this.active = true,0);
  }

使用新模型重置表单并恢复’pristine’类状态.
通过切换’active’标志将导致通过NgIf删除/重新添加表单.是的,这是一个小工作,直到他们可以修复:)

希望有所帮助

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读