以下是我一直在使用的订阅和根据可观察数据更新响应式表单的过程。
也许有一种方法可以在不订阅可观察对象和更改值的情况下解决问题。
@Component({ selector: 'app-my-component', template: ` <form [formGroup]="myForm"> <input formControlName="name" /> <input formControlName="email" /> </form> `, }) export class MyComponent implements OnInit { myForm: FormGroup; constructor(private fb: FormBuilder, private ds: DataService) {} ngOnInit() { this.myForm = this.fb.group({ name: '', email: '', }); ds.data$.subscribe((data) => { this.myForm.setValue({ name: data.name, email: data.email, }); }); } }
通常,消除订阅的一种方法是在包装器中使用异步管道
表单本身可以在NgOnInit或NgOnChanges内处理用户更新(如果可能有多个更新,并且在这种情况下设置表单值很重要)
注意:此示例中使用了一些非常前沿的Angular功能。可以按照相同的模式进行操作,但不一定需要使用每个功能