【发布时间】:2021-05-26 13:25:56
【问题描述】:
如果我从具有值 id 的选择器标记中选择任何一个子对象,如何找到具有完整信息的父对象,例如它包含的所有子对象。
这是我的html代码:
<select class="form-control show-tick" id="service_category" data-live-search="true" formControlName="service_category" (change)="selectCategory()">
<option selected="" value="">Select</option>
<ng-template #recursiveList let-categories>
<ng-container *ngFor="let category of categories">
<option [ngValue]="category.id">
<i *repeatTimes="category.depth" class="material-icons">remove</i>
<span *ngIf="category.parent != null">{{ category.name }}</span>
<b *ngIf="category.parent == null">{{ category.name }}</b>
</option>
<ng-container *ngTemplateOutlet="recursiveList; context:{ $implicit: category.children}"></ng-container>
</ng-container>
</ng-template>
<ng-container *ngTemplateOutlet="recursiveList; context:{ $implicit: categories}"></ng-container>
</select>
这是我的 json 数组:
[
{
"id": 1,
"name": "Travel",
"parent": null,
"children": [
{
"id": 2,
"name": "Car",
"parent": 1,
"children": [
{
"id": 3,
"name": "Cab Booking",
"parent": 2
}
]
}
]
}
]
我希望如果我从选择选项中选择出租车预订,那么我可以获得整个数组对象及其父对象和所有子对象。
【问题讨论】:
-
在代码中的某处,您正在读取 JSON 字符串并将其解析为 JavaScript 对象。在此步骤中,您可以用对父级的实际引用替换父级 ID。您可以将该对象用作值
[ngValue]="category"。然后您可以使用category.parent.parent访问祖父母,使用category.children[2].children[0]访问孙子。你甚至可以通过category.parent.children[2]访问兄弟姐妹 -
当 category.parent=someid 时,我如何访问 category.parent.parent,而不是任何进一步的 oject name parent。
-
请阅读我的全部评论,而不仅仅是其中的一部分:" 在代码中的某处,您正在读取 JSON 字符串并将其解析为 JavaScript 对象。在此步骤中,您可以替换父 ID对父级的实际引用。”
-
我该怎么做。请问可以吗?
-
这里是一个例子stackblitz。在示例中,参考是手动设置的。您应该自动执行此操作,但您可以在 Stackoverflow 上找到有关此主题(搜索和更改嵌套对象)的许多问题。
标签: javascript angular typescript