Печатные символы / api aurelia-validation
не идеальны для динамического построения правил, подобных этому, поэтому вам нужно немного обмануть.
Просто измените свою первоначальную декларацию на:
let ruleBuilder: FluentRuleCustomizer<any, any> = ValidationRules
.ensure("value")
.displayName(field.label) as any;
Это на самом деле не будет FluentRuleCustomizer
там (следовательно, as any
необходим), но это будет после того, как ваша логика ниже применила к нему какие-либо правила. Я думаю, .displayName()
должен просто вернуть FluentEnsure
или FluentRuleCustomizer
(оба имеют метод .on()
, который делает то же самое), но это другое обсуждение.
Вы, вероятно, хотите проверить, действительно ли были применены какие-либо правила, иначе .on()
выдаст ошибку:
if (rules.length) {
ruleBuilder.on(field);
}