在不带[[ngModel)]的mat-select中显示默认值

时间:2019-01-01 06:08:47

标签: angular rxjs angular-material observable angularfire

我有一个Angular材质表单字段,该字段具有一个mat-select,我试图将其设置为我的angularFire数据库(FireStore)中已有值的默认值。重要的要点是,在页面加载时,我试图将数据库中的一些数据视为可观察的对象。问题是,我必须做一些改动才能使其正常工作(当前使用ngIf,以便可以在可观察对象上使用“ | async”)。我这样做的原因是因为我无法在[[ngModel)]中使用“ | async”语法。

基本上我需要以下之一:

  1. 一种有角度的材料可以使我从观察中获得价值的解决方案。

  2. 一种解决方案,该解决方案如何从我的模板中获取等效的“ | async”并在组件的打字稿中执行相同的操作(从那里我可以使用ngModel绑定到该值)

  3. 只要它不是骇客的,我就不会考虑其他解决方案

以下是我与* ngIf一起使用的工作代码,以便显示正确的默认数据:

组件:

fq

模板(可以使用ngIf hack,但可以使用):

foreach (Control control in Controls)
    if (control is CheckBox)
    {            
        SqlCommand cmd = new SqlCommand($"INSERT INTO services({(control as CheckBox).Tag.ToString()}) VALUES (@a)", cnm);
        cmd.Parameters.AddWithValue("@a", (control as CheckBox).Checked);
        cmd.ExecuteReader();        
}

所需模板(语法上不正确):

constructor(private db: AngularFirestore) {
  }
  ngOnInit() {
    this.food$ = this.db.doc('user/123/foods/321').valueChanges() as Observable<Food>;
}

1 个答案:

答案 0 :(得分:0)

[(ngModel)]是[ngModel]和(ngModelChange)的组合形式。如果将它们分开,则应该可以使用

const arr = [ [1, 2], [3, 4] ]
const f = Array.from(arr, x => ...x)

Unexpected token ...

[ngModel]="(food$|async)?.fiber" (ngModelChange)="changeValue($event)"