我的简单脚本有问题。我有一个名为'FeatureFlag'的模型,它是一个参考父和子的树结构。我还有一个名为TreeBuilder的对象,它从FeatureFlag元素列表中生成一个树。
这是我的模特:
export class FeatureFlag {
private _id: number;
private _parent: FeatureFlag;
private _children: FeatureFlag[] = [];
set id(id:number) {
this._id = id
}
set parent(parent:FeatureFlag) {
this._parent = parent
}
get parent() : FeatureFlag {
return this._parent
}
set children(children:FeatureFlag[]) {
this._children = children
}
get children() : FeatureFlag[] {
return this._children
}
}
和TreeBuilder中有问题的方法build():
public build() {
for(let element of this.data) { //this.data is an array of dict [{node,parent}]
let found = this.findNode(element.parent) //searches in tree for node with id 'element.parent'
if(found) { //if parent node has been found
//found.children.push(element.node) //add current node to its children
console.log(found) //print found
}
}
}
当行:
found.children.push(element.node)
注释,控制台打印所有找到的父母。没关系。但是当取消注释行时,console.log只打印一次 - 第一次找到父级。为什么会这样?
此致
答案 0 :(得分:0)
奇怪!我会在推送之前放置一个调试器语句,然后逐步执行它以确保它不会抛出一个静默捕获的错误。还要确保children.push没有任何意外的副作用。
我怀疑children.push是以某种方式投掷,也许是因为没有定义孩子,但是Angular吞下了这个错误。此外,findNode肯定会返回一个FeatureFlag而不是其他东西吗?