Angular 模型类中的递归方法

Angular 模型类中的递归方法,angular,Angular,我有一个物体叫物质。每个材质都可以有一个父材质 在我的组件html中,我希望递归地显示材质的父级和材质的父级。我如何做到这一点并调用简单对象上的方法?甚至可以在typescript模型类中放置额外的get方法吗? 谢谢 角度5这应该是可能的。可以创建一个特殊组件,只要该材质有父对象,该组件就会递归显示对象 组成部分 导出类示例组件{ @输入()公共物料:物料; @Input()公共索引=0; } 索引用于确定您在树中的深度,以便进行格式化 模板 {{material.name} 虽然这样做

我有一个物体叫物质。每个材质都可以有一个父材质

在我的组件html中,我希望递归地显示材质的父级和材质的父级。我如何做到这一点并调用简单对象上的方法?甚至可以在typescript模型类中放置额外的get方法吗? 谢谢


角度5这应该是可能的。可以创建一个特殊组件,只要该材质有父对象,该组件就会递归显示对象

组成部分
导出类示例组件{
@输入()公共物料:物料;
@Input()公共索引=0;
}
索引
用于确定您在树中的深度,以便进行格式化

模板

{{material.name}
虽然这样做有效,但编写一个方法来展开树结构并将其转换为有序数组可能更容易。在我看来,这将是一个更容易使用的心智模型,然后必须考虑如何设计递归模板

获取祖先的递归方法
public get祖先(){
如果(!this.parent){
返回[];
}
返回[this.parent,…this.parent.get祖先()];
}

虽然递归是解决某些类型算法的一个很好的工具,但这听起来不像是其中之一。您应该使用迭代方法。现在还不清楚你到底要给多少父母看。。。所有这些?其想法是显示n个父名称以显示整个树结构。您可能想看看复合模式:因此底线是递归调用的开始必须在组件成员上?而不是在模型对象上?如果在数组中循环,并希望在每次迭代时对数组对象调用递归方法,该怎么办?您仍然可以在模型对象上定义该方法,并让它获得其所有祖先。查看更新的答案获取祖先列表。酷谢谢你的答案。所以不能直接在模型对象上调用方法?与material.getParentName()类似,您可以调用对象上的方法。您只需要确保正在使用的对象是正确的类型。如果您使用的是来自服务器的响应,那么它将只是一个JSON对象。要使JSON对象成为
Material
您需要执行以下操作:
let Material={…new Material(),…{/*您的JSON对象*/}