gpt4 book ai didi

angular - 使用 AoT 编译的 useFactory 与 useValue

转载 作者:太空狗 更新时间:2023-10-29 19:28:35 26 4
gpt4 key购买 nike

我使用 window.location 设置可注入(inject)。在我靠近导入的模块中,我定义了变量

const flag = window.location.search.includes('flag');
...
{ provide: FLAG, useValue: flag },

并且它在 JIT 编译中按预期工作但是当我切换到 AoT 时它坏了useFactory 在这两种情况下都有效

export function flagFactory() {
return window.location.search.includes('flag');;
}
...
{ provide: FLAG, useFactory: flagFactory },

为什么使用 useValue 时得到 undefined 而使用 useFactory 时得到 true

最佳答案

我的猜测是 AoTNgModule 结构之外静态分析您的代码。所以它会看到 window.location.search.includes 并提前执行。但是在编译时,这显然会返回 undefined。在使用 factory 的情况下,它不会尝试提前执行主体,只会在运行时执行。

这是 AOT 的(许多)陷阱之一。始终尝试让每个符号都可静态分析

关于angular - 使用 AoT 编译的 useFactory 与 useValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45540539/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com