我有一個只讀輸入的模板驅動窗體。當用戶點擊輸入時,會出現日期選擇器。用戶選擇日期後,輸入字段會填入信息。但是,當我點擊提交時,數據不在該輸入中。其他領域的工作。因此,在這種情況下,我得到Angular 2模板驅動窗體與自定義輸入
控制檯輸出的輸出:
Object {refNumber: "215170", date: ""}
HTML代碼:
<form [formGroup]="myForm" novalidate (ngSubmit)="onSubmit(myForm)">
<div class="form-group">
<label>Reference Number</label>
<input type="text" class="form-control" formControlName="refNumber">
</div>
<!--Date Picker-->
<input (focus)="toggleDatePicker(true)" readonly value={{date}} class="form-control" formControlName="date" />
<date-picker *ngIf="showDatePicker" [initDate]="date" (onDatePickerCancel)="toggleDatePicker($event)" (onSelectDate)="setDate($event)"
ngDefaultControl></date-picker>
</form>
組件代碼
export class AppComponent implements OnInit {
public myForm: FormGroup;
constructor(private _fb: FormBuilder) { }
ngOnInit() {
this.myForm = this._fb.group({
refNumber: ['', [Validators.required, Validators.minLength(5)]],
date: [''],
});
}
onSubmit(formOutput: FormGroup) {
console.log(formOutput.value);
alert('Submit this data to database')
}
// Date TimePicker
private date: any;
private showDatePicker: boolean;
// Date Pciker
toggleDatePicker(status: boolean): void {
this.showDatePicker = status;
}
setDate(date: any): void {
this.date = date;
}
}
--- -------更新--------------------- ----- 我已經創建了一個新項目來複制這個問題。問題仍然存在。這是一個關於這個項目正在發生的事情的視頻。對我來說,看起來輸入值只有在輸入內容時纔會更新。任何硬編碼的值或者在這種情況下,傳入的日期都不會更新場景後面的實際輸入值?
https://www.youtube.com/watch?v=4xc3m6qbILc
https://github.com/eddy80310/formsissue
它的成員似乎不是問題。正如我試圖從setDate()中刪除所有代碼並設置private date =「1234」。當我這樣做時,我看到輸入字段確實填充了1234,但是,在提交時,我仍然看到日期爲「」的相同輸出。我猜設置值= {{日期}}不適用於窗體?我甚至試圖在html中硬編碼value =「1234」,結果是一樣的。但是,如果我擺脫readony並輸入內容,則表單似乎在該情況下可以獲得該數據 – user172902
還有一個問題。您的輸入名稱爲** date **,並且組件中的變量也被命名爲** date **!所以相反,如果選擇日期值,那會導致混亂。 –
謝謝你指出。我改變了它。另外,請參閱我以前的評論以獲取更多信息。非常感謝您的幫助 – user172902