【问题标题】:How to reset ng-select in Reactive Form through a FormGroup (AbstractControl) in Angular 9?如何通过 Angular 9 中的 FormGroup (AbstractControl) 在 Reactive Form 中重置 ng-select?
【发布时间】:2020-06-09 09:19:22
【问题描述】:

我有一个带有一堆 ng-select 元素的 FormGroup。我还有以下代码可以重置反应表单中的所有值,除了 ng-select 元素。

  Object.keys(this.myFormGroup.controls).forEach(key => {
    const currentControl = this.myFormGroup.controls[key];
    if (currentControl == null) {
      currentControl.reset();
    }
  });

我也试过currentControl.patchValue('')null,但它不起作用。当我在ng-select 中加载错误的“item”时,它有一个选定的值“undefined”,我想在它为undefined 时清除此默认选定值。这就是我使用== null 的原因。

即使你有一个 hacky JavaScript (Vanilla) 解决方案,也要分享它。

【问题讨论】:

    标签: javascript angular typescript angular-ngselect angular-abstract-control


    【解决方案1】:

    您是否尝试传递要重置 ng-select 的初始值;里面的reset函数是这样的吗?

        Object.keys(this.myFormGroup.controls).forEach(key => {
        const currentControl = this.myFormGroup.controls[key];
        if (currentControl == (null || undefined)) {
          currentControl.reset('');
        }
      });
    

    我还添加了对未定义控制值的检查。

    【讨论】:

    • 是的。我试过了,但是当我用 '' 甚至 null 重置它时,它仍然说未定义。选择绑定到 ID,所以我用 id 更改“选定项目”,如下所示: .patchValue(3) 例如将选择 id 为 3 的项目,当我说: .reset('') 它搜索项目我想是 id 空字符串。所以无论我在做什么,它总是搜索为我传递的“值”(id)选择一些东西。 NgSelectComponent 有一个公共方法 .handleClearClick() 删除选定的项目,但我不能通过 AbstractControl (FormControl)“访问” NgSelectComponent
    猜你喜欢
    • 2019-04-07
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 1970-01-01
    • 2020-12-19
    • 2019-11-21
    • 2018-07-01
    • 1970-01-01
    相关资源
    最近更新 更多