有2个组成部分。在DashboardComponent
中有一个已创建表单的列表,在CreateFormComponent
中,我需要对正在DashboardComponent
中显示的已创建表单执行添加和编辑操作。两种操作将使用相同的形式。
我可以根据特定的ID从DashboardComponent
导航到CreateFormComponent
,但无法对其执行编辑操作。
码:
dashboard.html
<tr
*ngFor="let user of users"
style="text-align: center;">
<button
mat-mini-fab
style="background: white !important;color:black !important;outline:none;"
[routerLink]="['/Create_form',user.id]">
<!--<i class="fa fa-edit" aria-hidden="true"></i>-->
Edit
</button>
</tr>
Create_Form:
<form
#spfForm="ngForm"
(ngSubmit)="createspf(spfForm.value)"
ngNativeValidate>
<mat-form-field style="margin-top:-6%;">
<mat-select
[(ngModel)]="Priority"
name="Priority"
placeholder="Priority">
<mat-option value="High">
High
</mat-option>
<mat-option value="Medium">
Medium
</mat-option>
<mat-option value="Low">
Low
</mat-option>
</mat-select>
</mat-form-field>
</form>
Create_form.component.ts:
createspf(value) {
this.userservice.spf(value).subscribe((res: Response) => [
this.IsAdded = true,
console.log(this.confirmationString)
]);
}
答案 0 :(得分:2)
由于您并未真正提供StackBlitz,而且我没有时间为您创建整个Form Stackblitz,因此,我建议您这样做:
在CreateFormComponent
的{{1}}中,使用ngOnInit()
或使用FormBuilder
和FormGroup
手动创建一个ReactiveForm来初始化ReactiveForm。
还要在此组件中注入FormControls
并订阅ActivatedRoute
的{{1}} activatedRouterInstance
。如果有params
从那里进来,请通过该ID获取该项目的详细信息,并通过在其上调用BehaviorSubject
或id
来填充您创建的表单。
在创建的情况下,由于参数中没有任何ID,因此用户只会看到一个空表格。但是,在进行编辑的情况下,由于将实现表单的值,因此用户将看到表单中填充了所获得的数据。
希望这对您有所帮助。