Извините за мои вопросы, я очень новичок в angular, и я так запутался в этом.
Мне нужно создать функцию для редактирования моих пользователей.Поэтому я должен нажать на кнопку «Изменить» и получить ту же форму, что и «Создать», но заполненную информацией о пользователях.
Можете ли вы помочь мне улучшить функцию.
Обновление:
Я обновляю свою новую версию без ngModel, я хочу использовать patchValue (), но я не знаю, где и что делать, чтобы сохранить новый тип данных пользователем и обновить родительский компонент
Html
<div class="manage-content">
<div class="title">
<mat-icon class="user-icon">how_to_reg</mat-icon>
<h3>Edit a user</h3>
</div>
<form [formGroup]="form" (ngSubmit)="onUpdate()">
<mat-form-field class="full-width-input">
<input id="firstName" matInput placeholder="First name" formControlName="f_name"#f_name>
<mat-error *ngIf="isFieldInvalid('f_name')">
The first name you've entered is malformed.
</mat-error>
</mat-form-field>
<mat-form-field class="full-width-input">
<input id="middleName" matInput placeholder="Middle name" formControlName="m_name" #m_name>
<mat-error *ngIf="isFieldInvalid('m_name')">
The middle name you've entered is malformed.
</mat-error>
</mat-form-field>
<mat-form-field class="full-width-input">
<input id="lastName" matInput placeholder="Last name" formControlName="l_name" #l_name>
<mat-error *ngIf="isFieldInvalid('l_name')">
The last name you've entered is malformed.
</mat-error>
</mat-form-field>
<mat-form-field class="full-width-input">
<input id="email" matInput placeholder="Email" formControlName="email" #email>
<mat-error *ngIf="isFieldInvalid('email')">
The email you've entered is malformed.
</mat-error>
</mat-form-field>
<div class="cta-btn">
<button mat-raised-button class="createUserBtn" color="primary" type="submit" (click)="onCloseConfirm()">Update user</button>
<button mat-raised-button class="createUserBtn" color="warn" type="submit" (click)="onCloseCancel()">Cancel</button></div>
</form>
</div>
Могу ли я использовать для обновления формы с отправки?
parentComponemt.ts (только часть, открывающая диалоговое окно editUser)
openEditDialog(user): void {
let dialogRef = this.dialog.open(EditUserDialogComponent, {
width: '30%', disableClose: true, data: user
});
dialogRef.afterClosed().subscribe(result => {
console.log(`Dialog Closed ${result}`);
this.dataSource.data = [...this.dataSource.data];
console.log(this.dataSource.data);
this.dialogResult = result;
})
}
editUser.ts
constructor(private formBuilder: FormBuilder, private userService: UserService, public dialog: MatDialog, public thisDialogRef: MatDialogRef<EditUserDialogComponent>,
@Inject(MAT_DIALOG_DATA) public data: any) {
this.selectedUser = data;
this.form = this.formBuilder.group({
f_name: [this.selectedUser.name, Validators.compose([Validators.required, Validators.maxLength(100)])],
m_name: [this.selectedUser.m_name, Validators.compose([Validators.maxLength(100)])],
l_name: [this.selectedUser.l_name, Validators.compose([Validators.required, Validators.maxLength(100)])],
email: [this.selectedUser.email, Validators.compose([Validators.required, Validators.pattern('^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$')])]
});
}
isFieldInvalid(field: string) {
return (
(!this.form.get(field).valid && this.form.get(field).touched) ||
(this.form.get(field).untouched && this.formSubmitAttempt)
);
}
onUpdate() {
this.form.patchValue({
f_name: this.form.value.f_name ,
m_name: this.form.value.m_name,
l_name: this.form.value.l_name,
email: this.form.value.email
});
console.log(this.form.value); // the log is what I want , but How update my parent component table ?
}