我正在编写aurelia-validation并使用on
进行问题,FluentRuleCustomizer
是不同重载(ruleBuilder['on'](field);
)类的一部分。当我使用ruleBuilder.on(field);
时,它可以正常工作,但当我将其更改为ruleBuilder.on(field);
时,我会在import { ValidationRules, FluentRuleCustomizer, FluentEnsure, FluentRules } from 'aurelia-validation';
import { on } from 'cluster';
export class FormHelper {
private static initializedForms = [];
public static initializeFormRules(form) {
if (this.initializedForms.indexOf(form) > -1) {
return;
}
this.initializedForms.push(form);
for (const field of form.fields) {
if (field.validation.isValidate) {
let ruleBuilder: | FluentRules<any, any> | FluentEnsure<any> | FluentRuleCustomizer<any, any>;
ruleBuilder = ValidationRules
.ensure("value")
.displayName(field.label);
const rules = Object.keys(field.validation.validationRule)
.map(key => ({ key, value: field.validation.validationRule[key] }));
for (const rule of rules) {
ruleBuilder = ruleBuilder[rule.key](rule.value);
}
// ruleBuilder['on'](field);
ruleBuilder.on(field);
}
}
}
}
上获得一条红色的波浪线。请参阅以下代码和屏幕截图。
aurelia-validation
Link显示为m <- tidyr::spread(test, Group, Range, fill = 0)
mat <- as.matrix(m[, -1])
dimnames(mat) <- list(m$CpG, colnames(m[, -1]))
mat
1 2 3 4 5
cg01003813 0.9710 0.0917 0.0535 0.0627 0.0575
cg13176022 0.0895 0.0236 0.0412 0.0478 0.0346
cg25296477 0.0745 0.1300 0.0772 0.1310 0.0765
cg26484667 0.0768 0.1040 0.0735 0.0453 0.1390
非常感谢任何帮助:)
答案 0 :(得分:1)
aurelia-validation
的typings / api不适合动态构建这样的规则,所以你需要作弊。
只需将您的初始声明更改为:
let ruleBuilder: FluentRuleCustomizer<any, any> = ValidationRules
.ensure("value")
.displayName(field.label) as any;
实际上它不会是FluentRuleCustomizer
(因此需要as any
),但是在下面的逻辑应用了任何规则之后。 Tbh我认为.displayName()
应该只返回FluentEnsure
或FluentRuleCustomizer
(两者都有.on()
方法做同样的事情)但这是另一个讨论。
您可能想要仔细检查是否实际应用了任何规则,否则.on()
会出错:
if (rules.length) {
ruleBuilder.on(field);
}