Angular 轮询 trackBy 不会触发 ngDestroy 但组件已更新

Angular polling trackBy doesn't trigger ngDestroy but the component is updated

在这个例子中 https://stackblitz.com/edit/angular-ivy-hptdnu?file=src%2Fapp%2Fgrid%2Fgrid.component.html 没有 trackBy 会触发 ngOnDestroy 挂钩并更新数据我可以理解

但在另一个例子中 https://stackblitz.com/edit/angular-ivy-aan45e?file=src%2Fapp%2Fgrid%2Fgrid.component.html 使用 trackBy 时,永远不会触发 ngOnDestroy 挂钩,并且数据会毫无问题地更新,但我真的不明白为什么!我的意思是如果有行组件 如果@Input

上没有 setter,则不应更新销毁触发

你能解释一下我想念什么吗?

当您了解 trackBy 的用途(例如 https://netbasal.com/angular-2-improve-performance-with-trackby-cc147b5104e5)时,您的问题的答案就会变得显而易见:使用 trackBy 您是在告诉 angular 不要破坏并重新创建 ngFor 个迭代元素,但改为重用它们。所以 ngOnDestroy 不会被触发,因为组件永远不会被销毁,而是通过新的输入重新使用。