2017-06-16 22 views
0

你好我對Angular 2相當陌生,並且想寫一個ngFor的實現來練習。我發現本教程: https://teropa.info/blog/2016/03/06/writing-an-angular-2-template-directive.htmlAngular 2編寫像ngFor,iterableDiffer這樣的結構指令可能會導致錯誤

我有它的工作,但最近我不斷收到此錯誤。 「錯誤類型錯誤:this._trackByFn不是函數」。

我希望能夠更多地進行調試,但文檔很少,而且我不完全瞭解IterableDiffer(s)。所有人都看到它在第41行之後死亡。我一直在試圖弄清楚現在我改變了幾個小時。

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

這裏是普拉克:http://plnkr.co/edit/aM8Wdz72gu7BVNAN9Ulv?p=preview

感謝提供任何幫助。

UPDATE:

我發現我可以讓我的指令來工作,如果我在角2運行它,並採取了的類型不同,像這樣:
private differ:IterableDiffer(現在)
private differ:IterableDiffer<any>(前)

還沒解決,因爲我想弄清楚怎樣才能讓它在角4

回答

1

我懷疑問題這項工作的上游指出您對集合進行分析的地方。 Angular 4刪除了IterableDifferFactory的ChangeDetectorRef參數。我建議要回你的角4版本和改變的代碼,你在哪裏得到的線從像您的不同:

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

喜歡的東西:

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

我做了我的習俗變化版本的ngFor,並允許它在Angular 4中工作。