Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 使用带有垫弹出的反应式控制-角度7_Angular_Dialog_Components_Angular Module - Fatal编程技术网

Angular 使用带有垫弹出的反应式控制-角度7

Angular 使用带有垫弹出的反应式控制-角度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">

我能够使用ng模型成功地将数据从弹出窗口传递到父组件。然而,对于反应式表单,您不能使用ngModel。您必须使用formcontrolname,我无法传递数据。根据我的研究,我将使用这个.myform.input.value。但如果没有ngmodel,我该怎么做呢。我将此帖子用作参考:

.HTML

    <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})