【问题标题】:Angular + Chrome Extension with content script带有内容脚本的 Angular + Chrome 扩展
【发布时间】:2023-02-14 19:53:53
【问题描述】:

我正在使用角度编写 chrome 扩展(主要用于样式和路由)。我知道如何在内容和后台脚本之间进行通信,但问题是,当我通过 chrome.runtime.onMessage 在组件 X 中设置变量时,angular 不会重新渲染。我尝试使用 ChangeDetectorRef 并手动触发检测更改,但是一旦我使用它(有效),整个应用程序就会出现故障 - 例如,点击 mat-select 不会显示任何内容,除非我还在 mat-select onclick 中添加手动检测变化, mat-option onclick 等。我不想在我认为毫无意义的每一件事上使用 detectchange + 整个“平滑”外观都丢失了 - 比如高亮动画和类似的东西。

我发现 angular 无法检测到在 angular 的控制之外所做的更改,但是是否有针对所有这些的解决方法/修复?

我希望任何组件中的每个变量更改都能自动检测到 chrome.runtime.onMessage 侦听器所做的更改。我尝试使用 ChangeDetectorRef 但它破坏了其他正常行为。

【问题讨论】:

    标签: angular google-chrome-extension


    【解决方案1】:

    如果有人正在寻找解决方案,我会发布我的解决方案,它非常丑陋但效果很好。 我制作了在 chrome.runtime.onMessage 上设置的额外“tmp”变量,然后我在我的 ngOnInit 中使用 setInterval 添加了循环,以比较实际变量和 tmp 变量,如果它们不相等,则将“原始”变量设置为 tmp。我知道这不是完美的解决方案,但对于具有良好循环计时器的少量变量,它的性能更佳。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-28
      • 2023-02-26
      • 2021-06-15
      • 2013-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-05
      相关资源
      最近更新 更多