#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
это должно иметь значение, но оно всегда не определено.
Есть ли какой-нибудь способ не фильтровать детей?