Angular 2 编写结构指令,如 ngFor,iterableDiff 可能会导致错误



你好,我是 Angular 2 的新手,想写一个 ngFor 的实现来练习。我找到了本教程: https://teropa.info/blog/2016/03/06/writing-an-angular-2-template-directive.html

我让它工作,但最近我不断收到此错误。"错误类型错误:this._trackByFn不是函数"。

我希望可以对此进行更多调试,但文档很少,而且我不完全理解 IterableDiffer(s)。所有人都看到它在第 41 行之后死亡。几个小时以来,我一直在试图弄清楚我改变了什么。

let changes = this.differ.diff(this.collection);

这是扑通: http://plnkr.co/edit/aM8Wdz72gu7BVNAN9Ulv?p=preview

感谢您提供的任何帮助。

更新:

我发现如果我在 Angular 2 中运行我的指令,并取出 differ 的输入,我可以让我的指令工作,如下所示:
private differ:IterableDiffer(现在)private differ:IterableDiffer<any>(以前)

仍然不是一个解决方案,因为我想弄清楚如何在 Angular 4 中完成这项工作。

我怀疑问题出在您比较集合的点的上游。Angular 4 删除了 IterableDifferFactory 的 ChangeDetectorRef 参数。我建议回到您的 Angular 4 版本并更改您获得不同之处的代码行:

this.differ = this.differs.find(coll).create(this.changeDetector);

像这样:

this.differ = this.differs.find(coll).create((value) => value);

我在自定义版本的ngFor上进行了更改,并允许它在Angular 4中工作。

相关内容

  • 没有找到相关文章

最新更新