我有点困惑,如何在angular2中获得对象的keyvalue,同时使用*ngFor对对象进行迭代.我知道在1.有一种语法

ng-repeat="(key, value) in demo"

但我不知道如何在安格拉尔做到这一点.我也try 过类似的方法,但没有成功:

    <ul>
      <li *ngFor='#key of demo'>{{key}}</li>
    </ul>

    demo = {
        'key1': [{'key11':'value11'}, {'key12':'value12'}],
        'key2': [{'key21':'value21'}, {'key22':'value22'}],
      }

以下是我try 的plnkr:

如何使用*ngFor动态获取key1key2?经过广泛的搜索,我发现了使用管道的 idea ,但我不知道该怎么做.

推荐答案

latest release of Angular (v6.1.0)中一样,Angular团队为名为"keyvalue pipe"的管道添加了新的内置管道,以帮助您在Angular软件包的common模块中迭代对象、贴图和array.

<div *ngFor="let item of testObject | keyvalue">
    Key: <b>{{item.key}}</b> and Value: <b>{{item.value}}</b>
</div>

To keep original order, use keyvalue:onCompare,
and in component define callback:

// ...
import {KeyValue} from '@angular/common';

@Component(/* ... */)
export class MyComponent {
  private onCompare(_left: KeyValue<any, any>, _right: KeyValue<any, any>): number {
    return -1;
  }
}

Working Forked Example

更多有用的信息,请点击这里-

如果您使用的是Angular v5或更低版本,或者您想使用pipe实现,请遵循以下答案

Typescript相关问答推荐

如何在另一个if条件中添加if条件

类型安全JSON解析

泛型函数类型验证

在这种情况下,如何获得类型安全函数的返回值?

在类型内部使用泛型类型时,不能使用其他字符串索引

TypeScript类型不匹配:在返回类型中处理已经声明的Promise Wrapper

TypeScrip-将<;A、B、C和>之一转换为联合A|B|C

Angular 17子路由

Vue3 Uncaught SyntaxError:每当我重新加载页面时,浏览器控制台中会出现无效或意外的令牌

如何在Typescript 中组合unions ?

@TANSTACK/REACT-QUERY中发生Mutations 后的数据刷新问题

正确使用相交类型的打字集

类型推断对React.ForwardRef()的引用参数无效

如何使这种一对一关系在旧表上起作用?

如何从接口中省略接口

如何通过转换器类继承使用多态将对象从一种类型转换为另一种类型

类型脚本中参数为`T`和`t|unfined`的重载函数

推断集合访问器类型

如何使对象同时具有隐式和显式类型

使用本机 Promise 覆盖 WinJS Promise 作为 Chrome 扩展内容脚本?