gpt4 book ai didi

需要 Angular 自定义组件

转载 作者:行者123 更新时间:2023-12-03 17:04:08 25 4
gpt4 key购买 nike

有什么方法可以使用 required我的自定义组件上的属性?
我的组件如下所示:

import { Component, Input, forwardRef } from '@angular/core';
import { Platform } from 'ionic-angular';
import { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';

export const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR: any = {
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => DatePickerComponent),
multi: true
};

@Component({
selector: 'date-picker',
templateUrl: 'date-picker.html',
providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR]
})
export class DatePickerComponent implements ControlValueAccessor {
@Input("label") label: string;
@Input("pickerFormat") pickerFormat: string;
@Input("displayFormat") displayFormat: string;
@Input("max") max: string;
@Input("min") min: string;
@Input("cancelText") cancel: string;
@Input("doneText") done: string;
@Input("valid") valid: boolean;
@Input("disabled") disabled: boolean;

private _mobile: boolean = false;
private _date: string;

constructor(private plt: Platform) {
if (plt.is("mobile"))
this._mobile = true;
}

get date(): string {
return this._date;
}

set date(value: string) {
this._date = value;
this.onChange(this._date);
}

public onChange(value: any): void { }

public onTouched(): void { }

public writeValue(obj: any): void {
if (this.date !== obj) {
this.date = obj;
}
}

public registerOnChange(fn: any): void {
this.onChange = fn;
}

public registerOnTouched(fn: any): void {
this.onTouched = fn;
}
}

如果 _date,我希望我使用此组件的表单禁用提交按钮(或 date )为空或不是有效日期(因为最小/最大)。
有什么办法可以为我的组件实现这样的功能吗?

谢谢你的帮助!

最佳答案

让它实现 Validator界面 :

export class DatePickerComponent implements ControlValueAccessor, Validator {...}

它只需要一个函数, validate :

public validate(c: FormControl) {
// Business logic. If no error, return null, if not :
return { required: true };
}

关于需要 Angular 自定义组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50406399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com