angular Web组件属性在connectedCallback内部未定义,

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

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

core

这是个回归吗?

描述

我们在应用程序中使用Webcompoents。目前,在我们的Webcompoent的connectedCallback中,我们希望根据一些属性对基于组件进行一些更改。然而,当connectedCallback被执行时,所有属性都被设置为undefined。
我们进一步调查了这个问题,并发现,目前Angular在将Webcomponent附加到DOM之后设置其属性。
如果你查看下面的stackblitz控制台,你会注意到我们webcomponent内的属性的setter在connectedCallback之后被调用。
我们甚至将这一点与其他框架(如React)进行了比较,其中行为似乎更加标准,因为属性是在组件附加到DOM之前设置的。
React: https://codesandbox.io/s/prod-sky-gw6qcz?file=/src/App.js:259-261

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

https://stackblitz.com/edit/angular-ivy-rh2gzx?file=src/app/app.component.html

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

  • 无响应*

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

Angular : 13.2.0
q43xntqr

q43xntqr1#

你好,
这个问题有任何更新吗?

eoigrqb6

eoigrqb62#

你好,@pkozlowski-opensource@gkalpak ,
请能麻烦你看一下吗?

p5cysglq

p5cysglq3#

我对运行时/渲染的了解还不够充分,无法对此发表评论。(我最初认为这与@angular/elements有关,但仔细观察后发现并非如此。)

rkttyhzu

rkttyhzu4#

我正在微前端实现中遇到相同的问题,自定义元素在被"连接"之前需要一个参数,但Angular在设置属性之前就连接了元素。最后我不得不手动将元素添加到DOM中。

在此之前,我尝试使用以下模板,结果出现了奇怪的行为。

奇怪的行为是,如果组件直接由路由器绘制(例如,在浏览器刷新后),则在 attributeChangedCallback 之前调用 connectedCallback ,但如果在导航发生后再绘制,情况就会相反。

gdrx4gfi

gdrx4gfi5#

你好,我遇到了与Angular和web组件相同的问题。在Angular 16、14、12和8上都测试过,都会出现相同的错误。

我注意到的是:

  1. 只有当组件通过路由加载时,才会出错。如果我直接使用组件标签放置组件,它就可以正常工作。
  2. 只有当我放置嵌套的web组件时,才会出错,例如

相关问题