在* ngFor

时间:2017-06-19 22:29:08

标签: html function angular typescript web

我的Angular应用程序存在一个奇怪的问题。鉴于此组件:

home.component.ts

和这个模板:

home.component.html

页面将尝试永久加载,直到Chrome最终提示我杀死该标签。

如果不是getDataForMonth(month)而是home.component.ts只有一个名为monthData的数据对象,然后提供[data] "monthData"

在以下情况下它也可以正常工作:

  • 我在home.component.ts中有一个方法,描述为hi() {}和 然后在我的HTML中提供[data] hi()
  • 我在home.component.ts中有一个方法,描述为hi() {return "hey";}和 然后在我的HTML中提供[data] hi()
  • 我在home.component.ts中有一个方法,描述为hi(month) {return month;}和 然后在我的HTML中提供[data] hi(month)

getDataForMonth()有什么可以打破这个?这里有一些我不知道的限制吗?是否有可能是与getDataForMonth()无关的其他问题?

2 个答案:

答案 0 :(得分:3)

出于性能原因,您需要在* ngFor中预先计算函数调用。 将console.log添加到getDataForMonth()方法,以查看angular调用此函数的频率。 好的方法是每个月创建一个包含函数结果的数组并迭代它。

答案 1 :(得分:1)

  

“不要在绑定中使用函数。您的函数将被调用   每个变化检测周期。和角度在开发模式下运行x2周期“

意味着永远不要使用{{getDataForMonth()}}它会降低您的性能和错误的编码方式。

您可以尝试这样

在* ngFor渲染之前创建完整的Object并传递给* ngFor