angular DefaultDomRenderer2在注解元素上导致setAttribute不是函数错误,

sgtfey8w  于 6个月前  发布在  Angular
关注(0)|答案(4)|浏览(47)

哪个@angular/*包是bug的来源?

platform-browser

这是个回归吗?

是的

描述

最近将一个从版本6升级到16的angular项目进行了更新。升级后一切正常,但我在控制台看到了一条带有消息

ERROR TypeError: n.setAttribute is not a function

的错误日志。我成功地调试了这个问题,发现它来自DefaultDomRenderer2的setAttribute函数,当元素类型为#comment



时。

请提供一个最小复现bug的链接

https://github.com/magixian/applyzer

请提供您看到的异常或错误

ERROR TypeError: n.setAttribute is not a function

请提供您发现此bug的环境(运行ng version)

Angular CLI: 16.2.11
Node: 20.9.0
Package Manager: npm 10.1.0
OS Win x64
Angular: 16.2.11

还有其他信息吗?

  • 无响应*
fv2wmkja

fv2wmkja1#

请提供一个可运行的复现示例,或者至少在非优化构建中的堆栈跟踪。没有复现我们无法提供任何帮助。

kqqjbcuj

kqqjbcuj2#

请提供一个可运行的复现示例,或者至少在非优化构建中的堆栈跟踪。没有复现我们将无法提供任何帮助。

我已经成功地在https://github.com/magixian/applyzer这个小型应用程序上复现了这个bug(也在主要问题信息中添加了)。

在这个复现bug的过程中,我似乎已经找到了bug的来源:https://github.com/magixian/applyzer/blob/main/src/app/block-builder/block-builder.component.html#L2。这个属性在我们的应用中似乎并不是必需的,所以可以毫无问题地删除它。然而,只是为了说明,在之前的版本中这都是正常工作的。

我会暂时保持这个问题开放,以防万一需要对此情况进行审查。

yv5phkfx

yv5phkfx3#

A ng-container 将在DOM中呈现为 Comment Node ,并且不提供setAttribute函数。你应该使用div而不是ng-container,或者将[attr.data-index]移动到HTML元素中。

bihw5rsg

bihw5rsg4#

将以下文本内容标记为错误,因为这种情况应该由编译器检测并在编译过程中报告,而无需涉及任何运行时。attr. 绑定语法清楚地表明它与绑定属性有关,我们知道<ng-container>上没有属性,因此我们可以静态地检测到这种情况。

相关问题