Javascript 如何解决执行失败的问题';removeChild';在';节点';?

Javascript 如何解决执行失败的问题';removeChild';在';节点';?,javascript,html,angular,typescript,Javascript,Html,Angular,Typescript,我使用以下代码替换了一个html元素,我使用的是ng bootstrap中的ngbTypeahead HTML <input [resultTemplate]="rt" [ngbTypeahead]="search"> <ng-template #rt let-r="result" let-t="term"> <span class="dropdown-heading" [ngClass]="onType()"> </

我使用以下代码替换了一个html元素,我使用的是ng bootstrap中的ngbTypeahead

HTML

    <input [resultTemplate]="rt" [ngbTypeahead]="search">
    <ng-template #rt let-r="result" let-t="term">
     <span class="dropdown-heading" [ngClass]="onType()">
     </span>
    </ng-template>
获取以下错误。我如何解决这个问题


错误DOMEException:未能在“节点”上执行“removeChild”:要删除的节点不是此节点的子节点。
此.element是HTML集合。当你这样做的时候

document.getElementsClassName('hello');
它返回与此类匹配的元素集合(它只能包含一个元素) 因此,当您尝试执行
此.element.parentNode
时,您正在尝试查找数组的parentNode


尝试
this.element[0].parentNode.replaceWith(element)

您似乎遇到了一个逻辑错误

您正在替换第一个元素的父元素及其所有内容。因此,删除集合中的所有其他元素

第二次循环出现时,它会尝试替换DOM中不再存在的元素

请简化以下示例

const-element=document.createElement('p');
const textnode=document.createTextNode(“再见”);
元素appendChild(textnode);
document.getElementById('bye').parentNode.replaceWith(元素)

你好,世界
再见

这个.elementRef
这个.element[i]
是什么?您需要提供更多的代码来诊断您的问题。更新的代码,我正在使用angularNope,继续。我们需要更多的代码,为什么您发布的代码位于构造函数之外?replaceWith()返回已删除的元素集,因此此处无法删除,因为该元素不是节点引用的子元素。如果您不在循环中,则此元素中的索引i如何工作。元素[i]已更新代码。是的,我用过环。同样的问题,谢谢。键入新字母时,typeahead值将不同。请在我的场景中建议解决方案。我将DOM操作留给Angular,并向typeahead提供一个列表。在这里列出一个for循环的列表:如果你认为我的答案回答了你原来的问题,把标记看作是“被接受的”。你总是可以提出一个新的问题来描述你在让typeahead建议发挥作用时遇到的问题。我可以建议你调查一下这件事吗?
document.getElementsClassName('hello');