Цель : Я хотел бы получить значение для ввода в угловой реактивной форме.Я видел, что это было ноль, если я не сделал тайм-аут, поэтому я попытался использовать onCompleted () наблюдаемого
Согласно RXJS Observable doSomething onComplete и https://angular.io/api/forms/FormGroup#addcontrol
Я подумал, что мне нужно использовать метод addControl.Однако я не могу получить значение (оно выводится на консоль как ноль)
ngOnInit() {
GetUserProfile();
}
public GetUserProfile()
{
this.aa.GetProfile(id).subscribe(resp => {
this.user = resp;
this.aa.GetPref(id).subscribe(resp =>{
this.email = resp.Email;
// Form Configuration
this.createForm();
this.isLoaded = true;
})
},
err => {
console.log(err);
},
() => {
console.log("On completed?");
this.spanish = (<HTMLInputElement>document.getElementById("spanish2")).value
console.log(this.spanish);
this._profileForm.addControl('spanish3', new FormControl(this.spanish) );
}
);
}
createForm() {
this._pForm = this.fb.group({
'spanish2': new FormControl()
});
}
Фактический результат : выводится сообщение «Завершено?», Но также указано «Не удаетсяПрочитайте свойство 'value' of null "со ссылкой на
this.spanish = (<HTMLInputElement>document.getElementById("spanish2")).value
I , ожидаемое , чтобы оно имело значение в этой точке.Работает только если я использую setTimeout.
HTML:
<mat-card class="patient-card">
<mat-card-title class="text-center">
My Profile
</mat-card-title>
<mat-card-content>
<div fxLayoutAlign="center center" *ngIf="!isLoaded">
<mat-spinner></mat-spinner>
</div>
<div *ngIf="isLoaded">
<form [formGroup]="_pForm" novalidate>
<mat-form-field class="input-width" [class.hide-element]="true">
<input matInput placeholder="Spanish" id="spanish2" formControlName="spanish2" i18n-value="@@AiBrErQv_G2_91" value="Spanish">
</mat-form-field>
</form>
</div>
</mat-card-content>
</mat-card>