【发布时间】:2020-02-01 06:44:20
【问题描述】:
我有一个我构建的 dateTime 组件,我将在整个应用程序中使用它。我有一个 formGroup 用于在单独的组件上提交表单,并且我需要该组件成为该表单的一部分。我似乎无法从子表单中获取数据以显示在父表单中。有没有办法将其设置为父表单的属性/值?
子日期时间选择器 HTML:
<mat-form-field>
<input matInput [ngxMatDatetimePicker]="picker" placeholder="{{ name }}" [formControl]="dateControl" required="true">
<mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
<ngx-mat-datetime-picker #picker startView="year"></ngx-mat-datetime-picker>
</mat-form-field>
儿童打字稿:
@Input() name: string;
@Input() displayTime: boolean;
@Input() allowDateInPast: boolean;
public dateControl = new FormControl();
constructor() { }
ngOnInit() {
}
父 HTML/表单:
<form [formGroup]="formGroup">
<mat-label>Name</mat-label>
<input type="textfield" formControlName="reportName" matInput required="true" placeholder="Report Name" name="reportName">
</mat-form-field>
<div class="col-sm">
<app-datetime-picker [name]="'Start Date'" [displayTime]="true" [allowDateInPast]="true"></app-datetime-picker>
</div>
<button class="float-right" [disabled]="formGroup.invalid" (click)="createReport()" mat-raised-button color="primary">Save</button>
</div>
</form>
父打字稿:
formGroup: FormGroup = new FormGroup({
reportName: new FormControl("", Validators.required),
// ?? something here
});
这可能吗?我需要以某种方式使用@Output() 吗?
感谢您的帮助。
特拉维斯 W-
【问题讨论】:
-
您应该在日期选择器中实现
ControlValueAccessor接口。检查此 Stackblitz:stackblitz.com/edit/angular-oe2eth
标签: angular typescript angular7 angular-forms