как запустить асин c код перед син c код в сочетании с формой - PullRequest
2 голосов
/ 06 января 2020

пока у меня есть форма, где я могу сохранить некоторые данные в indexedDB (например, список имен) и отобразить их в виде списка. Когда я нажимаю на запись в этом списке, открывается другая форма, где я могу отредактировать имя, на которое щелкнул. вторая форма должна выглядеть точно так же, как и первая, за исключением того, что раздел ввода не пустой, а заполнен именем, на которое я нажал.

моей форме нужен код syn c (насколько я знаю )

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 - asyn c и разрешается после patchValue, поэтому ничего не происходит.

Итак, я попробовал :

ngOnInit() {
    db.list.get({id: 1}).then( function(names){
        this.myForm.patchValue({name: names.name});
    });
} 

но тогда myForm неизвестен; если я объявлю myForm, моя форма будет недовольна, потому что она не объявлена.

Теперь у меня закончились идеи.

Кто-нибудь знает, как это решить?

1 Ответ

2 голосов
/ 06 января 2020

Вы можете попробовать использовать ключевое слово await

async ngOnInit() {
    const value = await db.list.get({id: 1}, temp => this.names = temp);
    this.myForm.patchValue({name: this.value.name});
} 
...