[英]Custom Formly Component not showing validation message on blur
我有一個自定義的 angular 日期選擇器組件,它使用 ngb-datepicker 並實現控制值訪問器。 現在,我從中創建一個表單組件以用於我的 json 表單。 這工作正常,但當用戶單擊控件並單擊離開時它不顯示驗證消息。 即使觸摸了控件,它也不會受到影響。 就像沒有觸發模糊一樣。 我在這里缺少什么?
自定義日期選擇器控件
import { Component, forwardRef, Input } from '@angular/core';
import {
ControlValueAccessor,
FormControl,
NG_VALUE_ACCESSOR,
} from '@angular/forms';
@Component({
selector: 'custom-date-picker',
template: `
<div class="input-group">
<input
class="form-control"
placeholder="yyyy-mm-dd"
name="dp"
[formControl]="myControl"
ngbDatepicker
#d="ngbDatepicker"
(keyup)="change($event)"
(dateSelect)="change($event)"
/>
<button
class="btn btn-outline-secondary bi bi-calendar3"
(click)="d.toggle()"
type="button"
></button>
</div>
`,
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => NgbdDatepickerPopup),
multi: true,
},
],
})
export class NgbdDatepickerPopup implements ControlValueAccessor {
myControl = new FormControl();
model = '';
private _onChange = (value: unknown) => {};
private _onTouch = (value: unknown) => {};
writeValue(obj: any): void {
this.myControl.setValue(obj);
}
registerOnChange(fn: any): void {
this._onChange = fn;
}
registerOnTouched(fn: any): void {
this._onTouch = fn;
}
change(event: unknown) {
if (event instanceof Event) {
const date = (event.target as HTMLInputElement).value;
this._onChange(date);
this._onTouch(date);
}
}
}
正式組成
import { Component } from '@angular/core';
import { FieldType } from '@ngx-formly/core';
@Component({
selector: 'formly-field-input',
template: `
<custom-date-picker [formControl]="formControl" [formlyAttributes]="field"></custom-date-picker>
<div class="invalid-feedback" style="display: block;">
<formly-validation-message *ngIf="showError" [field]="field"></formly-validation-message>
</div>
`,
})
export class FormlyFieldInput extends FieldType {}
我設法通過公開 _onTouch 並更新custom-date-picker
的模板以綁定到模糊事件 (blur)="_onTouch($event)" 來解決此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.