【发布时间】:2026-02-14 02:10:02
【问题描述】:
在 Angular 中,我在组件中有以下逻辑:
menu: Array<object> = [];
ngOnInit() {
this.menu.push(
...HomeMenu,
...QuickReferenceMenu
);
console.log(this.menu);
}
menu 属性获取以下常量,并对其进行解构:
export const HomeMenu: Array<object> = [
{ path: '', name: 'Home', direct: true }
];
export const QuickReferenceMenu: Array<object> = [
{
path: 'quck-reference',
name: 'Quick Reference',
children: [
{
path: 'combat',
name: 'Combat'
}
]
}
];
在模板中,我只需执行以下操作
<div *ngFor="let item of menu">
asd
</div>
我得到以下错误,而不是正常工作:“找不到类型为 'object' 的不同支持对象 '[object Object]'。NgFor 仅支持绑定到 Iterables,例如数组。”您可以在上面看到控制台日志。
确实是一个数组。
管理该组件的模块也从 angular 导入 CommonModule
import { NgModule } from '@angular/core';
import { NavigationComponent } from './navigation.component';
import { MatMenuModule } from '@angular/material/menu';
import { MatButtonModule } from '@angular/material/button';
import { CommonModule } from '@angular/common';
@NgModule({
declarations: [ NavigationComponent ],
imports: [ MatMenuModule, MatButtonModule, CommonModule ],
exports: [ NavigationComponent ]
})
export class NavigationModule {}
我很茫然。我真的不明白为什么这么简单的操作会失败。
编辑:我添加了 repo https://github.com/Panglot/DnD_app
【问题讨论】:
-
可能是因为你在初始化
menu时没有定义name和path。这就是在渲染 DOM 时,菜单中没有值,因此会引发错误的原因。只需将其定义为menu=[ {name:" ", path:" "}],{name:"",path:""}将重复预期获得值的次数。 -
不,这没有帮助。这没有意义。您应该能够尝试迭代空数组。只是长度为 0 而你没有,但是一旦它填充了数据,它应该正常迭代。这里它说它显然不是数组。