是什么导致错误 "Failed to set the 'currentNode' property on 'TreeWalker'"?

What causes the error "Failed to set the 'currentNode' property on 'TreeWalker'"?

在使用 Lit-Element 和 Typescript 构建 WebComponent 时,我收到了这个相当神秘的错误消息。

当我尝试将 checked 属性设置为元素时出现错误。

罪魁祸首与此类似:

    return html`<input type="radio" ${(testValue==0 ? "checked":"")}>`

错误信息是

TypeError: Failed to set the 'currentNode' property on 'TreeWalker': The provided value is not of type 'Node'.

经过一番研究,我终于明白了问题所在。 我在想我可以将模板字符串基本上视为一种模板语言。不要将其视为命令 ('print this, print that'),而应将其视为要由函数解释的描述。当然你需要了解解释器功能。

在我的例子中,我试图有条件地渲染 属性。也就是说,如果满足条件,就打印这个,如果不满足,什么都不打印。

文档非常清楚地说明了这个问题:https://lit-html.polymer-project.org/guide/writing-templates#bind-to-attributes

我的解决方案是:

    return html`<input type="radio" ?checked=${(testValue==0)}>`