如何 运行 异步代码在同步代码之前结合表单
how to run async code before sync code in combination with form
到目前为止我有一个表单,我可以在其中将一些数据保存在 indexedDB 中(例如名称列表)并将它们显示为列表。当我单击该列表的条目时,将打开另一个表单,我可以在其中编辑我单击的名称。第二个表格应该和第一个表格完全一样,只是输入部分不是空的,而是填满了我点击的名字。
我的表单需要同步代码(据我所知)
myForm = new Formgroup({
name: newFormControl('',[Validators.required])
});
我的第一次尝试是:
ngOnInit() {
db.list.get({id: 1}, temp => this.names = temp);
this.myForm.patchValue({name: this.names.name});
}
但是 get 是异步的并在 patchValue 之后解析,所以什么也没有发生。
所以我试过了:
ngOnInit() {
db.list.get({id: 1}).then( function(names){
this.myForm.patchValue({name: names.name});
});
}
但是 myForm 是未知的,如果我在那个时候声明 myForm,我的 Form 会因为没有声明而感到不高兴。
现在我 运行 没主意了。
有人知道怎么解决吗?
您可以尝试使用 await
关键字
async ngOnInit() {
const value = await db.list.get({id: 1}, temp => this.names = temp);
this.myForm.patchValue({name: this.value.name});
}
到目前为止我有一个表单,我可以在其中将一些数据保存在 indexedDB 中(例如名称列表)并将它们显示为列表。当我单击该列表的条目时,将打开另一个表单,我可以在其中编辑我单击的名称。第二个表格应该和第一个表格完全一样,只是输入部分不是空的,而是填满了我点击的名字。
我的表单需要同步代码(据我所知)
myForm = new Formgroup({
name: newFormControl('',[Validators.required])
});
我的第一次尝试是:
ngOnInit() {
db.list.get({id: 1}, temp => this.names = temp);
this.myForm.patchValue({name: this.names.name});
}
但是 get 是异步的并在 patchValue 之后解析,所以什么也没有发生。
所以我试过了:
ngOnInit() {
db.list.get({id: 1}).then( function(names){
this.myForm.patchValue({name: names.name});
});
}
但是 myForm 是未知的,如果我在那个时候声明 myForm,我的 Form 会因为没有声明而感到不高兴。
现在我 运行 没主意了。
有人知道怎么解决吗?
您可以尝试使用 await
关键字
async ngOnInit() {
const value = await db.list.get({id: 1}, temp => this.names = temp);
this.myForm.patchValue({name: this.value.name});
}