“找不到类型为“对象”的其他支持对象“ [对象对象]”。

时间:2019-06-12 16:09:44

标签: angular typescript

我想显示name,但是将_id的值保存为mat-select。 并将其值保存在selectedIngridient中,以选择选项。

我得到:

  

“找不到类型为'object'的其他支持对象'[object Object]'。NgFor仅支持绑定到Iterables,例如数组。”

但是我在看另一篇文章(例如:Cannot find a differ supporting object '[object Object]' of type 'object'. NgFor only supports binding to Iterables such as Arrays),无法找出错误。

我做错了什么?

Stacklitz:

https://stackblitz.com/edit/angular-l6yvgd?file=src/app/app.module.ts

初始化:

  import { Observable } from 'rxjs/internal/Observable';
  allIngridients: Observable<Ingridient[]>;
  selectedIngridient: Ingridient;

DataLayer:

    export class Ingridient {
    _id: string;

    name: string;// todo: Übersetzungen
    barCode?: Barcode;

    constructor() {
        this._id = UUID.UUID();
    }
}

标记:

      <mat-form-field>
            <mat-select placeholder="Select an ingridient" [(value)]="selectedIngridient">
              <mat-option *ngFor="let ingridient of allIngridients" [value]="ingridient._id">
                {{ingridient.name}}
              </mat-option>
            </mat-select>
          </mat-form-field>

填充allIngridients(调用constructor):

  inlineFunction_IngridientsNumberAndUnits_Ingridient(recipeId: string, anzahl: number): Ingridient[] {
    let result: Ingridient[] = [];

    for (let i_result = 0; i_result < anzahl; i_result++) {

      // todo: später mit recipe
      const tag: Ingridient = new Ingridient(recipeId);

      // Code
      tag.name = "Unit_" + (i_result + 1);
      tag.name = "BarCodes_" + (i_result + 1);

      // todo: changed
      this.allIngridients.subscribe(current => {
        current.push(tag);
      })

      result.push(tag);
    }

    return result;
  }

1 个答案:

答案 0 :(得分:0)

下面的行不是数组,这就是为什么您不能对其进行迭代的原因。持有数组是可以观察到的。您需要订阅并将结果分配给数组,然后对其进行迭代。

class MarkerFactory { Marker _marker; Marker buildMarker() => _marker ??= Marker( position: LatLng( center.latitude + sin(_markerIdCounter * pi / 6.0) / 20.0, center.longitude + cos(_markerIdCounter * pi / 6.0) / 20.0, ), onDragEnd: (LatLng newPosition) async { print('Old position: ${marker.position}'); }, ); }

或使用allIngridients: Observable<Ingridient[]>;管道:

| async