哪个@angular/*包是bug的来源?
core, elements
描述
预期:
在附加到IonButton的指令中对输入信号运行效果应该触发/运行效果代码。
实际:
效果没有运行。
如果附加到其他html标签上,它可以正常工作。
- 打开复现网址。
- 按照屏幕上的说明操作。
洞察:
当前行为可能来源于这里 => https://github.com/ionic-team/ionic-framework/blob/ba5cebf2542c8fbd6c29af593a31a742e0caba1e/packages/angular/src/directives/proxies.ts#L357
请提供一个链接,指向最小复现bug的情况
https://stackblitz.com/edit/stackblitz-starters-gkckxf?file=src%2Fmain.ts
请提供您发现此bug的环境(运行 ng version
)
Angular version: 17.3.4
还有其他问题吗?
问题已由"JB Nizet"和"Matthieu Riegler"确认,并鼓励我在这里创建一个bug报告。
6条答案
按热度按时间a8jjtwal1#
在Ionic中引用:ionic-team/ionic-framework#29444
disbfnqx2#
你好。我们在公司内部的一个新项目中也发现了同样的问题。看起来问题确实是
changeDetectorRef.detach
。这个简单的组件在effect
中也没有显示,如果你添加了相同的指令:组件和指令:
gzszwxb43#
根本原因是在指令中注入了
ChangeDetectorRef
。当指令应用于组件时,指令中注入的 CDR 是组件的 CDR。效果被安排在组件初始化时首先运行,并使用 CDR 来实现这一点。在这种情况下,组件永远不会初始化(因为在构造函数中运行了
detach
),因此效果永远不会启动。为了解决这个问题,可以让组件完成其初始化,并仅在
ngAfterViewInit
钩子中分离。这样一来,效果将4jb9z9bj4#
以下是最小复现:
https://stackblitz.com/edit/stackblitz-starters-7zd1fv?file=src%2Fmain.ts
正如@JeanMeche指出的,这里的根本原因是组件从变更检测树中分离。话虽如此,我确实认识到这非常不明显 - 这是我们在稳定
effects
API之前要调查的一个案例。rdlzhqv95#
我已经创建了#55808来捕获根本原因,没有任何外部依赖。让我们在里面继续讨论。
重复的#55808
piok6c0g6#
重新开放,因为这是一个与#55808不同的问题。