Hier ist der Prozess, den ich verwendet habe, um ein reaktives Formular basierend auf beobachtbaren Daten zu abonnieren und zu aktualisieren.
Vielleicht gibt es eine Möglichkeit, das Problem zu lösen, ohne das Beobachtbare zu abonnieren und den Wert zu ändern.
@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功能。可以按照相同的模式进行操作,但不一定需要使用每个功能