【发布时间】:2019-01-10 00:42:50
【问题描述】:
我想在使用另一个弹出式组件的组件中实现反应式表单
对话框组件(子组件)
.ts
@Component({
selector: 'app-mat-description-indicateur-dialog',
templateUrl: './mat-description-indicateur-dialog.component.html',
styleUrls: ['./mat-description-indicateur-dialog.component.scss'],
viewProviders: [
{
provide: ControlContainer,
useExisting: FormGroupDirective
}
]
})
export class MatDescriptionIndicateurDialogComponent implements OnInit {
@Input() indicateurLocauxAddForm: FormGroup;
constructor(@Optional() @Inject(MAT_DIALOG_DATA) public data : any ,
@Optional() public dialogRef: MatDialogRef<MatDescriptionIndicateurDialogComponent>,
private parent: FormGroupDirective) { }
ngOnInit() {
this.indicateurLocauxAddForm = this.parent.form ;
this.indicateurLocauxAddForm.addControl('description' ,new FormControl ('', Validators.required));
}
}
.html
<mat-grid-list style="margin-top : 15px" cols="6" rowHeight="70px">
<mat-grid-tile colspan="6" rowspan="1">
<mat-form-field class="example-full-width">
<textarea matInput placeholder="Description de l'indicateur local" style="height: 35px; width: 550px"
formControlName="description"></textarea>
</mat-form-field>
</mat-grid-tile>
</mat-grid-list>
父组件
.ts
openDialog() {
const dialogRef = this.dialog.open(MatDescriptionIndicateurDialogComponent, {
width: '600px',
data: 'any'
});
dialogRef.afterClosed().subscribe(result => {
console.log('The dialog was closed');
this.poPup = result;
console.log("this description " + this.poPup);
console.log("data is " + dialogRef);
});}
.html
<form [formGroup]="indicateurLocauxAddForm">
<app-mat-description-indicateur-dialog [indicateurLocauxAddForm]="indicateurLocauxAddForm" ></app-mat-description-indicateur-dialog >
</form>
当我打开模式时,会显示此错误:
错误类型错误:无法在 MatDescriptionIndicateurDialogComponent.push../src/app/campagne/axe/axe-locaux/indicateur-locaux-add/mat-description-indicateur-dialog/mat-description 读取属性“addControl” -indicateur-dialog.component.ts.MatDescriptionIndicateurDialogComponent.ngOnInit (main.js:1294)
错误类型错误:无法在 FormGroupDirective.push../node_modules/@angular/forms/fesm5/forms.js.FormGroupDirective.addControl 处读取 null 的属性“get”
【问题讨论】:
-
我建议您将 formControl 的“名称”作为参数传递,并使用 [formControl],而不是 formName,它是不同的,但也许这个 stackoverflow.com/questions/54073280/… 可以帮助您(最后一部分我创建了一个“组件”与州和国家/地区)
标签: angular typescript angular6