Я не могу установить объект из диалога материалов angular в таблицу материалов angular. У меня есть поле formControl pm. Я хочу отображать строку в поле pm, но я хочу иметь возможность нажимать на save, и объект должен быть установлен вместо строки из поля pm. Как я могу go сделать это более чистым способом. Подход, который я использовал, - это взять объект pmObject, и при сохранении я переназначаю значение объекту .Мне нужен правильный подход, пожалуйста, направьте меня.
HTML
<table class = "addUser" mat-table [dataSource]="dataSourceAddUser">
<ng-container matColumnDef="projectPm" fxFlex="40px">
<th mat-header-cell *matHeaderCellDef> </th>
<td mat-cell *matCellDef="let element">
<mat-form-field floatLabel="never">
<input matInput (click)="openDialogPM()" [value]="element.projectPm" [(ngModel)]="element.projectPm" placeholder="PM" [formControl]="pm" required>
<mat-error *ngIf="pm.invalid">{{getErrorMessage()}}</mat-error>
</mat-form-field>
</td>
</ng-container>
<ng-container matColumnDef="Save" class="Save">
<th mat-header-cell *matHeaderCellDef> </th>
<td mat-cell *matCellDef="let element" style="min-width: 100px;">
<button mat-raised-button (click)="saveUser(element)" [disabled]="projectIdSys.invalid || projectDesc.invalid || sslPod.invalid || rssl.invalid || geo.invalid || pm.invalid || dm.invalid || dh.invalid || towerHead.invalid"> <mat-icon color="accent">save</mat-icon>
Save </button>
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumnsAddUser"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumnsAddUser;"></tr>
</table>
TS
openDialogPM(): void {
const dialogRef = this.dialog.open(DialogOverviewExampleDialogComponent , {
width: '1500px',
height: '500px',
});
dialogRef.afterClosed().subscribe(result => {
console.log('The dialog was closed',result);
this.pm.setValue(result.empName);
this.pmObject = result;
});
}