经过大量的挖掘,我找到了这个问题的答案。如果这里有人遇到同样的问题,请将其张贴在此处。我只需要将[(ngModel)]添加到mat单选组,如果选择的单选按钮是dataapicker,则在后端进行一些验证。ngModel将值传递给组件ts代码,datepicker上的datechange事件也将日期传递给组件ts
这是代码。
<mat-radio-group formControlName="installStatus" [(ngModel)]="installStatus">
<mat-radio-button value="8555">8555 - Delay Crew</mat-radio-button>
<mat-radio-button value="9000">9000 - Self Install</mat-radio-button>
<mat-radio-button value="FFM" (click)="datePicker.open()">
<mat-input-container>
<input #date matInput [matDatepicker]="datePicker" placeholder="FFM"
(dateInput)="addEvent(date)" (dateChange)="addEvent(date)">
<mat-datepicker #datePicker></mat-datepicker>
</mat-input-container>
</mat-radio-button>
</mat-radio-group>
Typescript部分
ngOnInit() {
this.form = new FormGroup({
accountNumber: new FormControl('', [Validators.required,
Validators.pattern('[0-9-]*'),
Validators.minLength(13),
Validators.maxLength(13)]),
customerName: new FormControl('', [Validators.required, Validators.pattern('[a-zA-Z.][a-zA-Z. ]+')]),
packageName: new FormControl('', Validators.required),
campaignName: new FormControl('', Validators.required),
notes: new FormControl(''),
entryDate: new FormControl(moment().format('ll')),
installStatus: new FormControl('', Validators.required)
})
}
onSale(form) {
if (this.form.value.installStatus !== "FFM") { this.datePickerInput = this.form.value.installStatus; }
else {
var ffmDate = moment(this.datePickerInput);
this.datePickerInput = moment(ffmDate).format('ll');
}
this.form.setValue({
accountNumber: this.form.value.accountNumber,
customerName: this.form.value.customerName,
packageName:this.form.value.packageName,
campaignName:this.form.value.campaignName,
notes:this.form.value.notes,
entryDate:this.form.value.entryDate,
installStatus:this.datePickerInput
});
this.wos.postWorkOrder(this.form.value);
}
addEvent(date: MatDatepickerInputEvent<Date>) {
this.datePickerInput = date.value;
}