useFactory vs useValue with AoT compilation



我用window.location来设置注射。 在我的模块中,我定义变量

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 },

为什么我undefineduseValuetrueuseFactory

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

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

相关内容

  • 没有找到相关文章

最新更新