angular - 具有动态输入的模板驱动表单的高级自定义验证器
问题描述
- KillerString 需要一个数字在第一个位置
- string1 + string2 + killerstring 需要小于 15 的组合长度(例如)
- 我试图
pattern
从角度来源“复制/改编”验证器。
我怎样才能拥有一个附加了“动态数据”信息的 customValidator。输入中没有“挂钩”,我可以在其中附加“动态数据”
你有什么建议吗?
在 Syed 的帮助下,我接近了……它非常 hacky,我确信当您使用我的验证器有多个字段时它不起作用customLength
:
https://stackblitz.com/edit/angular-4cvomu-zjlht5
更新 2
仍然缺乏的一件事:
- 当 string1 或 string2 被“更改”时,这不会触发验证
killerInput
...
解决方案
更改以下几行并检查
输入错误状态匹配器-example.ts
从
const total_name = customLength.arr.join();
if (total_name.length > customLength.maxLength) {
到
const total_name = customLength.arr?customLength.arr.join(''):'';
if (total_name.length < customLength.maxLength) {
输入错误状态匹配器-example.html
从
<input matInput placeholder="killerstring" [(ngModel)]="killerstring" name = "TDkillerstring" #TDkillerstring = "ngModel" required [pattern]="pat1" [customLength]="{arr: [string1, string2], maxLength: 15}">
到
<input matInput placeholder="killerstring" [(ngModel)]="killerstring" name = "TDkillerstring" #TDkillerstring = "ngModel" required [pattern]="pat1" [customLength]="{arr: [string1, string2, killerstring], maxLength: 15}">
现在你会得到错误,如果 3 个文本框字符的长度组合超过 15 的长度。
我已经在 stackblitz 中更新了我的代码。在这里检查
推荐阅读
- json - Parse JSON String with TSQL
- android - BiometricPrompt 虹膜和面部提示不适用于加密对象身份验证。#AndroidX
- flutter - Why the Id of object addedItem is always return 1 until I refresh page
- python - Matching strings with multiple lists for a search function
- java - How to refactor methods that only differ in which method they call on an object in java?
- python - Python函数中的HTML代码不起作用
- automated-tests - 如何将来自 javascript 的 karate.log 调用添加到黄瓜报告中?
- android - 检测其他应用程序何时启动
- common-lisp - 在宏内构建符号时处理可读大小写
- c# - Run a C# method in separate Task to avoid delay