我想显示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;
}
答案 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