我尝试了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上使用。
答案 0 :(得分:1)
对我来说,它可以正常工作,只要单击所需选项,就不会出现错误。
请注意,您必须单击所需的选项,而不仅仅是编写它。
这里是live demo
答案 1 :(得分:0)
为了补充一点,我将验证器函数修改为以下内容:
private _autocompleteValidator(control: AbstractControl) {
return control.value && typeof control.value === 'string'
? { autocomplete: true }
: null;
}
将 control.value && ...
添加到检查允许清除输入(无论是部分键入还是先前选择)并通过验证。
这个验证器的目的应该只是强制该值成为自动完成器中的一个选择,如果输入了一个值。
如果需要相关特定字段,则应通过单独的标准 Validators.required
进行配置。