我正在try 在角2阿尔法28中做一些事情,并且在使用字典和ngFor时遇到了问题.

我有一个打印脚本的界面,如下所示:

interface Dictionary {
    [index: string]: string
}

在JavaScript中,这将转换为一个对象,其中包含的数据可能如下所示:

myDict={'key1':'value1','key2':'value2'}

我想重复一下,并try 一下:

<div *ngFor="(#key, #value) of myDict">{{key}}:{{value}}</div>

但以下方法都无济于事:

<div *ngFor="#value of myDict">{{value}}</div>
<div *ngFor="#value of myDict #key=index">{{key}}:{{value}}</div>

在所有情况下,我都会出现Unexpected tokenCannot find 'iterableDiff' pipe supporting object这样的错误

我错过了什么?这不可能了吗?(第一种语法适用于Angular 1.x)或者迭代对象的语法不同吗?

推荐答案

他们似乎不想支持NG1中的语法.

根据MišKo Heach的说法:

映射在键中没有顺序,因此它们的迭代是不可预测的. 这在NG1中得到了支持,但我们认为这是一个错误,不会 在NG2中受支持

计划是拥有一个mapToIterable管道

<div *ngFor"var item of map | mapToIterable">

因此,为了在对象上进行迭代,需要使用"管道".

作为一种解决方法,下面是一个小示例,它迭代了关键点:

Component:

import {Component} from 'angular2/core';

@Component({
  selector: 'component',
  templateUrl: `
       <ul>
       <li *ngFor="#key of keys();">{{key}}:{{myDict[key]}}</li>
       </ul>
  `
})
export class Home {
  myDict : Dictionary;
  constructor() {
    this.myDict = {'key1':'value1','key2':'value2'};
  }

  keys() : Array<string> {
    return Object.keys(this.myDict);
  }
}

interface Dictionary {
    [ index: string ]: string
}

Angular相关问答推荐

Angulat 17@ngrx/Signals或全球服务,用什么?

Angular:将服务注入非独立组件导致应用程序中断

Sass-Loader中出现分号错误:ANGLE应用程序的缩进语法中不允许使用分号

将sass与@Use语句一起使用时出现Angular 新的VITE构建器编译错误

Ngrx Select 器返回部分对象

当信号的值发生变化时,模板不会更新

对象中的值丢失 angular ngrx

关闭 Dynamsoft Web Twain 弹出窗口

如何修复 [Object: null prototype] { title: 'product' }

将查询参数附加到 URL

ViewChild 和 ContentChild 的所有有效 Select 器是什么?

使用 Angular2 将文件上传到 REST API

移除 Angular 组件创建的宿主 HTML 元素 Select 器

Angular 4 设置下拉菜单中的选定选项

`[(ngModel)]` vs `[(value)]`

Angular 2 http 没有得到

得到了预期表达式的插值 ({{}})

Angular2中是否有像window.onbeforeunload这样的生命周期钩子?

提交后在Angular 2中重置表单

如何在 angular2 中的 div 的 contenteditable 上使用 [(ngModel)]?