ng对于地图对象

时间:2018-07-25 15:36:33

标签: html angular typescript ngfor

我很难理解ngFor如何与map一起使用。

这是我的HTML代码:

<div *ngFor="let country of wars.getCountrys()">

,这里是我的TypeScript代码:

wars: Map < number, Array < country> > = new Map < number, Array < country > > ();

getCountrys() {
    console.log('getCountrys()');
    return Array.from(this.wars.keys());
}

一切正常,但是在控制台中我有2个getCountrys(),我不明白为什么函数getCountrys()被调用2次。

2 个答案:

答案 0 :(得分:1)

不要使用该函数来生成数组。在构造函数中将其创建为变量。

在构造函数中:

this.countries = Array.from(this.wars.keys());

在html中:

<div *ngFor="let country of countries">

答案 1 :(得分:0)

在Angular中,有一个叫做 ChangeDetection 的东西 它基本上可以检测组件数据何时发生更改,然后自动重新呈现视图以反映该更改。

在角度应用的“开发”模式下,完成了一个额外的检测周期,这意味着我们现在有两个检测周期。

这两个循环导致两次执行您的方法。