Почему onCompleted для Observable не имеет значений формы? - PullRequest
0 голосов
/ 06 февраля 2019

Цель : Я хотел бы получить значение для ввода в угловой реактивной форме.Я видел, что это было ноль, если я не сделал тайм-аут, поэтому я попытался использовать 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...