Как установить значение по умолчанию для mat-select? - PullRequest
0 голосов
/ 05 августа 2020
<mat-select [(ngModel)]='selected' >
   <mat-option *ngFor="let language of languages" [value]="language" >
      {{language}}
   </mat-option >
</mat-select> 

это мой html

selected:string
constructor(private firestore: AngularFirestore,private globals:GlobalsService) { 
  console.log(this.globals.userUid);
  this.firestore.collection('customers').doc(this.globals.userUid).get().subscribe(function(doc){
    if(doc.exists){
      console.log(doc.data()["language"]);
      this.selected  = doc.data()["language"]
    }
  })
  for (let index = 0; index < avaibleLanguages.length; index++) {
    const language:string = avaibleLanguages[index]
    this.languages.push(language)
  }}

в console.log Я вижу, что я получил правильный язык от firebase, но он не установил его как выбор по умолчанию. все остальное здесь работает

Ответы [ 2 ]

0 голосов
/ 05 августа 2020

Если симптомы не исчезнут, используйте ChangrDetectorRef: узнайте здесь https://angular.io/api/core/ChangeDetectorRef

...
constructor (private changeDetector: ChangeDetectorRef) { }

private someFn(): void {
    this.changeDetector.detach();
    this.changeDetector.reattach();
    this.changeDetector.detectChanges();
}
...
0 голосов
/ 05 августа 2020

просто нужно поместить значение в локальную переменную.

var local
    this.firestore.collection('customers').doc(this.globals.userUid).get()
    .subscribe(doc =>{
      if(doc.exists){
        local = doc.data()["language"]
      }
    },err => console.log(err),()=>{this.selected = local }
    )
    for (let index = 0; index < avaibleLanguages.length; index++) {
      const language:string = avaibleLanguages[index]
      this.languages.push(language)
    }
...