2017-02-05 1 views
0

У меня есть угловая 2 реактивная форма, которая содержит md-select, чтобы сделать выбор врача-пользователя из firebase. Md-select работает отлично, когда данные существуют до визуализации компонента, но если данные, поступающие асинхра, как наблюдаемый он не показывает выбранное значенияУгловой 2 md-select не связывает выбранное значение при заполнении из наблюдаемого массива

doctors$:Observable<Doctor[]> = this.doctorService.findAllDoctors(); 
 
    
 

 
    constructor(private fb:FormBuilder , public doctorService : DoctorService 
 
    ,private cdr: ChangeDetectorRef) 
 

 
    {  
 
    
 
this.doctors$= this.doctorService.findAllDoctors(); 
 
    
 
this.form = this.fb.group({ 
 
     FullName: ['',Validators.required], 
 
     Ext: [''], 
 
     BirthDate: ['',Validators.required], 
 
     Gender: ['',Validators.required], 
 
     Phone: ['',[Validators.required]], 
 
     doctorId: [''] 
 

 
    }); 
 
<md-select formControlName="doctorId" ngControl="doctorId" placeholder="Doctor" > 
 
     <md-option *ngFor="let p of doctors$ | async " [value]="p.value">{{p.value}}</md-option> 
 

 
    </md-select>

введите код здесь

+0

Вы должны подписаться на данные. Обновите код службы доктора на свой пост. ** Обратите внимание, что переменная вашего врача является наблюдаемой ** – Aravind

+0

Я подписался на данные и получает список врачей, но, к сожалению, после создания formgroup, поэтому, когда врач привязан к md-select, он не находит в нем вариантов, поэтому он оставляет его пустым , когда я добавляю опции в конструктор, например var doctor = [{Name: "Ahmed"}, {Name: "Jack"}] он работает! , проблема здесь в том, что данные появляются в последнее время после того, как группа обязательной формы существует в любом случае для создания группы форм после подписки на данные? благодарит заранее –

ответ

0

решаемых с помощью Обновления мкра-выберите с выбранным VALU е после данных опций загрузки асинхронно

ngOnInit() { 
 
    
 
this.doctors$.subscribe(c=>{ 
 

 
    this.form.controls['doctorId'].patchValue(this.initialValue.doctorId); 
 

 

 
});

Смежные вопросы