angular - mat-selection-list 不适用于 *ngFor
问题描述
我正在尝试使用 mat-selection-list 作为 mat-menu 中的选项:
export class AppComponent implements OnInit() {
items: string[] = ['item1', 'item2', 'item3']
constructor(){}
}
<button [matMenuTriggerFor]="settings">
<\button>
<mat-menu #settings="matMenu">
<button mat-menu-item [matMenuTriggerFor]="items">Items<\button>
<\mat-menu>
<mat-menu #items="matMenu">
<mat-selection-list>
<mat-list-option *ngFor="let item of items" [value]="item">
{{item}}
<\mat-list-option>
<\mat-selection-list>
<\mat-menu>
当我单击按钮时,会出现菜单,其中可以选择元素“项目”。item1
在“项目”中,我希望看到项目列表item2
和item3
. 但是,没有显示任何内容并引发以下错误:
Error: Cannot find a differ supporting object [object Object] of type 'object'. NgFor only supports binding to Iterables such as Arrays.
我的阵列怎么items
不适合 ngFor?我错过了什么?如果我手动添加每个 mat-list-option,则该列表会正确填充,但是使用 ngFor 它会给我带来问题。
解决方案
我看到两个可能的问题:
1.您使用#settings="matMenu"
and#items="matMenu"
将两者的值设置为settings
和items
的相同引用matMenu
,这可能不是您想要的。从文档:
Angular 如何为模板变量赋值
……
如果变量在右侧指定了一个名称,例如#var="ngModel"
,则该变量指的是元素上具有匹配 exportAs 名称的指令或组件。
你应该只使用#settings
and #items
。然而...
2.#items
在您的模板中将覆盖items: string[]
您的组件中的。<mat-menu>
为您的元素选择一个不同的变量名称——#itemsMenu
例如,也许。
推荐阅读
- python - 当我添加 PushButtons 时,KeyPressEvent() 不适用于标签
- c++ - Tensorflow 默认如何使用 CPU 内核?
- stm32 - MPU6050 在地址 0x68 上没有响应,但出现在 I2C 扫描地址中
- c# - 使用 PostMessage 模拟鼠标点击
- python-3.x - 如果循环在不需要时重复自身
- excel - 防止小数的 VBA 输入框
- javascript - javascript网页未在前台模式下接收通知,尽管在后台接收(仅数据消息)
- sql - 在 SQL Server 中的 select concat 语句中包含引号
- javascript - 尽管有箭头功能,但在 axios catch 块中未定义“this”
- python - 如何在python中为计数和比例创建聚合?