[英]Angular 7: how to detect changes on binded data tree?
给出无限级数据树,绑定到子组件。
dataTree = [ { name: 'root level', children: [{ name: 'root level
first child', children: [...more children here...] }] } ]
父组件将此dataTree绑定到其子级。
在子组件中,dataTree被添加到TreeController并在模板上列出/显示,我想跟踪绑定的@Input dataTree上的更改:
我已经知道KeyValue和Iterable Differ可以用于这个问题,但在这种情况下我并不喜欢它,因为我需要一个完整的树遍历。
另一个想法是创建一个服务,该服务将具有dataTree,子组件通过Subject订阅更改。 我不想在这里使用服务有一些很好的理由......
有什么想法我怎么能以一种很好的方式解决这个问题?
我建议的方法是getter / setter的定义,因此您可以获取目标属性的任何更改:
private _dataTree: DataTree;
public get dataTree() {
return this._dataTree;
}
@Input()
public set dataTree(dataTree: DataTree) {
// Here you can compare changes, as described on your question, and do whatever is needed
if (this.myComparisonMethodThatDetectsMyNeedsOn(dataTree)) {
this._dataTree = dataTree;
}
}
希望能帮助到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.