Компонент углового дерева: Фильтруйте узлы, но оставляйте видимыми дочерние элементы

#angular #typescript #angular-tree-component

Вопрос:

Я хочу отфильтровать узлы из компонента углового дерева. При предоставлении функции фильтра для фильтрации дочерние элементы узла, соответствующие фильтру, также фильтруются, и я хочу, чтобы они оставались видимыми.

Я попытался получить доступ к свойству родительского узла isHidden , чтобы проверить, не скрыт ли родительский узел, чтобы также не скрывать текущий узел.

Это мой код для фильтрации:

 treeModel.filterNodes((node: TreeNode) =gt;{  console.log("Has parent?: ", !node.isRoot); // works  console.log("Parent hidden?", node.parent.isHidden); // always undefined  console.log("Visible bc parent", !(node.isRoot ?? node.parent.isHidden)); // always true for child =gt; !(false ?? undefined)    return !(node.isRoot ?? node.parent.isHidden) || // doesn't work; always true for child  node.data.name.toLowerCase().includes(this.unitSearchString.toLowerCase()) || // works  node.data.id.toLowerCase().includes(this.unitSearchString.toLowerCase())} // works  );  

Это должно сработать, потому что фильтр начинается с корневого узла, а затем переходит в дочерние, поэтому я ожидал, что node.parent.isHidden это должно иметь значение, но оно всегда не определено.

Есть ли какой-нибудь способ не фильтровать детей?