- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我使用 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
?
最佳答案
我的猜测是 AoT
在 NgModule
结构之外静态分析您的代码。所以它会看到 window.location.search.includes
并提前执行。但是在编译时,这显然会返回 undefined
。在使用 factory
的情况下,它不会尝试提前执行主体,只会在运行时执行。
这是 AOT 的(许多)陷阱之一。始终尝试让每个符号都可静态分析
关于angular - 使用 AoT 编译的 useFactory 与 useValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45540539/
我有以下代码片段: Mapper.CreateMap() .ForMember(x => x.CompanyId, opt => opt.UseValue(_companyId)); Mapp
useValue 和 useFactory 提供者有什么区别? useFactory 似乎返回一个值,useClass 也返回一个值。 最佳答案 useFactory 采用预期返回值的工厂函数,并且还
我在 Controller 中使用 Automapper,但在第一次调用后数据没有被刷新。 public class Somethings { public int Id {get; set;
为什么UseValue只执行一次?我需要为每个请求调用 TeamRepository。 我怎样才能做到这一点? 从 TeamEmployee 到 TeamEmployeeInput 的映射: Crea
我收到这个错误 - 错误:错误:静态解析符号值时遇到错误。调用函数“SecurityModule”,不支持函数调用。考虑用导出函数的引用替换函数或 lambda ... 我读到函数调用不能太复杂以至于
我有以下代码模拟来自服务的数据: providers: [ { provide: AdminService, useValue: { avcData: { runMode: 'NORM
我正在尝试构建一个 React Native 应用程序。我在终端上发现了一个错误说Unable to resolve "./useValue" from "node_modules\react-nat
在编写单元测试时,我遇到了奇怪的情况,我不明白问题出在哪里。 我已经准备好重现的短代码: TestInjectable - 简单的可注入(inject)类 @Injectable() class Te
我想知道为什么当我想通过 useValue 字段提供特定值时 Angular 2 提供程序语法不起作用。 例如,在我的 app.module.ts 中 // Abstracted base class
Angular 2 高级测试文档: userServiceStub = { isLoggedIn: true, user: { name: 'Test User'} }; TestBed.co
我使用 window.location 设置可注入(inject)。在我靠近导入的模块中,我定义了变量 const flag = window.location.search.includes('fl
我需要在 Angular 2 中为 dart 添加一个“外部”对象到依赖注入(inject)。 “外部”的意思是,它的构造函数上没有 @Injectable 注释,因为它来自外部库。 所以我想,我可以
当 Angular 4.0.2 应用程序提前编译时,提供者定义为 useValue import { OpaqueToken, Provider } from '@angular/core'; exp
我是 Angular 4 的新手,我刚刚通过 Angular Cli 创建了一个项目,但出现错误 Uncaught TypeError: useValue,useFactory,data is not
我是一名优秀的程序员,十分优秀!