我'm developing an application using Ionic 3 and I' m使用DateTime组件有问题 . 我在用户界面中有一个DateTime组件,它是可选的,因此,默认值是可选的 . 没有最短日期,最长日期是当前日期的2年:
<ion-datetime displayFormat="DD/MM/YYYY" [(ngModel)]="dataInicial" doneText="Feito"
cancelText="Cancelar" [max]="maxDate">
</ion-datetime>
export class AbaPedidosConfirmadosPage {
dataInicial:Date;
maxDate:string;
constructor() {
this.maxDate = moment().add(2, 'years').format('YYYY');
}
}
所以问题是:当模型未定义(或为空)时,是否有选择当前日期选择出现的选择器?这是为了可用性,在这种情况下如果用户需要选择明天日期,则需要更改年份,然后是月份,最后是当天;如果它在当前日期加载选取器内容,则用户只需要更改日期 .
我试过只是创建一个指令来加载当前日期的点击,但它是在DateTime组件处理事件后触发的:
@Directive({
selector: '[load-date]'
})
export class LoadDateDirective {
private lastValue:any;
@Input() public ngModel:any;
@Output('ngModelChange') modelChange:EventEmitter<string> = new EventEmitter<string>();
public constructor(private _elementRef:ElementRef,
private _renderer:Renderer) {
}
@HostListener('click', ['$event'])
_click(ev: UIEvent) {
this.lastValue=this.ngModel;
if(!this.lastValue) {
ev.preventDefault();
ev.stopPropagation();
this.modelChange.next(moment().format('YYYY-MM-DD'));
}
}
}
EDIT
我会尝试更好地解释它 . 以下是实际字段,当用户在字段中单击时,选择器显示配置的最大日期:
由于我不知道用户想要选择哪个日期,所需的行为将是与当前日期一起出现的选择器,如下所示:
由于这些字段用于按日期过滤结果,因此它们是可选的,因此如果日期为空,服务器将返回所有内容 .
2 回答
没有正式的解决方案,但我通过编程方式调用日期选择器实现了解决您的问题的方法 .
这是工作Plunker .
HTML:
TS:
我希望这能帮到您 .
当你说“模型未定义或为空”时我假设尚未定义变量“dataInicial” .
如果是这种情况,那么您应该在构造函数中将其定义为当前日期/时间...类似于:
Ionic的日期选择器使用ISO 8601日期时间格式:YYYY-MM-DDTHH:mmZ作为其值,因此,对于您需要使其看起来像字符串“2017-07-19”的日期