Angular 使用带有垫弹出的反应式控制-角度7
我能够使用ng模型成功地将数据从弹出窗口传递到父组件。然而,对于反应式表单,您不能使用ngModel。您必须使用formcontrolname,我无法传递数据。根据我的研究,我将使用这个.myform.input.value。但如果没有ngmodel,我该怎么做呢。我将此帖子用作参考: .HTMLAngular 使用带有垫弹出的反应式控制-角度7,angular,dialog,components,angular-module,Angular,Dialog,Components,Angular Module,我能够使用ng模型成功地将数据从弹出窗口传递到父组件。然而,对于反应式表单,您不能使用ngModel。您必须使用formcontrolname,我无法传递数据。根据我的研究,我将使用这个.myform.input.value。但如果没有ngmodel,我该怎么做呢。我将此帖子用作参考: .HTML <form [formGroup]="myForm"> <div> <mat-form-field class="m-card">
<form [formGroup]="myForm">
<div>
<mat-form-field class="m-card">
<input formControlName="input" matInput placeholder="Entry">
</mat-form-field>
<mat-form-field>
<input matInput [matDatepicker]="dp" placeholder=" Date" formControlName="date" [(ngModel)]="data.date">
<mat-datepicker-toggle matSuffix [for]="dp"></mat-datepicker-toggle>
<mat-datepicker #dp></mat-datepicker>
</mat-form-field>
</div>
</div>
<div mat-dialog-actions>
<button mat-raised-button color="primary" (click)="onCancelClick()">Cancel</button>
<button mat-raised-button color="primary" [mat-dialog-close]="data" [disabled]="addTaskForm.controls.myForm.errors">add entry</button>
</div>
</form>
}))
只需在父级中创建表单并将表单作为
data:{form:myForm}
传递,否则您可以使用[formGroup]=“data.form”
。请记住,您可以传递任何类型的数据。表单在弹出窗口中,因此我必须在那里创建表单,但让我试试您的另一个示例:您说的是使用[formGroup]
而不是formControlName
对不起,我认为您的问题是传递“表单”。好吧,如果您使用ReactiveForm,那么就不要将它放在相同的输入formControlName和[(ngModel)]中。只是,在创建表单时要赋予值。我建议您在init中创建表单,因此在ngOnInit中,在创建表单之后:this.myForm.get('date').setValue(data.date)
-或者在创建表单时使用value data.date您有没有我没有真正遵循的示例。注意:由于我得到一个旧的stackblitz,我不能使用form.markAllAsTouched()
const dialogRef = this.dialog.open(myPopup, {
width: '500px',
data: {
text: this.text,
active: this.active,
date: this.date
}
dialogRef.afterClosed().subscribe(result => {
if(result){
this.addTask.push({displayText: result.text, effectiveDate: result.date, isActive: result.active})