pattern
验证器。我如何有一个customValidator附加“动态数据”信息。输入中没有“挂钩”,我可以在其中附加“动态数据”
您有什么建议吗?
在Syed的帮助下,我接近了……非常hacky,当您使用customLength
验证程序有多个字段时,我确定它不起作用:
https://stackblitz.com/edit/angular-4cvomu-zjlht5
我在WORKING SOLUTION和this的帮助下找到了that。
仍然缺少的一件事:
killerInput
...中的验证... 答案 0 :(得分:1)
更改以下行并检查
input-error-state-matcher-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) {
input-error-state-matcher-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更新了我的代码。检查这里
答案 1 :(得分:1)
根据更新后的帖子,您需要侦听指令中@Input的更改。可以使用ngChanges
和registerOnValidatorChange
完成,这将帮助您注册在验证器输入更改时要调用的回调函数。
killerInput类可以使用模板变量ngClass和某些样式设置:
HTML :
<input matInput #myInput=ngModel [ngClass]="{'error-class': myInput.invalid}" ....">
指令
.....
private _onChange: () => void;
registerOnValidatorChange(fn: () => void): void { this._onChange = fn; }
ngOnChanges(changes: SimpleChanges): void {
if ('customLength' in changes) {
if (this._onChange) this._onChange();
}
}
CSS
.error-class{
border: 2px solid red
}
您可以查看this文章。