使用Angular 4

时间:2018-09-11 13:36:07

标签: javascript angular

我是angular的新手,但是在加载页面时,我需要为date类型的html输入分配一个日期。

我注意到,如果您将输入类型从日期更改为文本,则将值分配给输入,但将日期保留为未分配值。

有人会知道我要去哪里。

按照我的代码。

HTML

<input class="form-control" 
       type="date" 
       maxlength="10" 
       placeholder="dd/mm/yyyy"
       [(ngModel)]="carFilter.dataInicial"  
       (ngModelChange)="onDateChangeFim($event)"    
        min="{{auxFimMinDate}}"
        max="{{auxFimMaxDate}}">

组件示例

export class CarComponent implements AfterViewInit, OnInit {

    carFilter : CarModel;
    auxInMaxDate: Date  = new Date("2099-12-30");
    auxFimMinDate: Date  = new Date("1900-01-01");


    ngOnInit(): void {

        this.carFilter  = new CarModel();
        const data = new Date();        
        this.carFilter.dataInicial = data;

    }
}

模型示例

export class CarModel {

    offSet : number;
    dataInicial : Date;
    dataFinal : Date;

    constructor(
                offSet:number,
                dataInicial : Date,
                dataFinal : Date
                ){

        this.offSet = offSet;
        this.dataInicial = dataInicial;
        this.dataFinal = dataFinal;     

    }
}

图像输入

enter image description here

控制台Google Chrome

enter image description here

2 个答案:

答案 0 :(得分:1)

我能够通过分配ngModel解决问题。日期:“ yyyy-MM-dd”。我必须研究它为什么这样工作。如果有人想发表评论或提出更好的建议,谢谢。 感谢所有帮助@Samy Sammour和@Dmitriy Snitko的人

<input class="form-control" 
   type="date" 
   maxlength="10" 
   placeholder="dd/mm/yyyy"
   [ngModel]="carFilter.dataInicial | date:'yyyy-MM-dd'"  
   (ngModelChange)="onDateChangeFim($event)"    
    [min]="auxFimMinDate"
    [max]="auxFimMaxDate">

答案 1 :(得分:0)

可变日期应该是Date中的对象。不只是一个字符串。

因此,请尝试添加一个真实的对象:

this.carFilter  = new CarModel();
var data = new Date('10/09/2018');        
this.carFilter.dataInicial = data;

<input type="date" [(ngModel)]="carFilter.dataInicial" />