如何在Angular中选择检测垫自动完成选项?

时间:2020-10-23 16:14:00

标签: javascript angular angular-material

我尝试了this方法,以便将验证应用于“物料自动完成”。但是用于通过比较类型来检测是否选择值的部分不起作用:

require 'axlsx'

p = Axlsx::Package.new
wb = p.workbook

s = wb.styles
unlocked = s.add_style locked: false

wb.add_worksheet(name: 'Sheet Protection') do |sheet|
  sheet.sheet_protection do |protection|
    protection.password = 'fish'
    protection.auto_filter = false
  end

  sheet.add_row [1, 2, 3], style: unlocked # These cells won't be locked
  sheet.add_row [4, 5, 6]
  sheet.add_row [7, 8, 9]

  # Set up auto filters
  sheet.auto_filter = 'A1:C3'
end

p.serialize 'sheet_protection_example.xlsx'

在调试应用程序时,import { AbstractControl } from '@angular/forms'; export function RequireMatch(control: AbstractControl) { const selection: any = control.value; if (typeof selection === 'string') { return { incorrect: true }; } return null; } 行始终返回true-无论是否选择该选项都无关紧要。知道如何检查吗?可测试的应用程序可以在StackBlitz上使用。

2 个答案:

答案 0 :(得分:1)

对我来说,它可以正常工作,只要单击所需选项,就不会出现错误。
请注意,您必须单击所需的选项,而不仅仅是编写它。

正常,但有两个错误:
enter image description here

如果您未选择以下选项之一,则会显示错误“不正确”:
enter image description here

如果您键入选项而不是单击它,则错误仍然存​​在:
enter image description here

如果单击所需选项,则没有错误:
enter image description here

这里是live demo

答案 1 :(得分:0)

为了补充一点,我将验证器函数修改为以下内容:

  private _autocompleteValidator(control: AbstractControl) {
    return control.value && typeof control.value === 'string'
      ? { autocomplete: true }
      : null;
  }

control.value && ... 添加到检查允许清除输入(无论是部分键入还是先前选择)并通过验证。

这个验证器的目的应该只是强制该值成为自动完成器中的一个选择,如果输入了一个值

如果需要相关特定字段,则应通过单独的标准 Validators.required 进行配置。