使用 ng serve 时 Angular2 APP Init [i] 错误

标签 angular

NG-CLi - 1.0.0-beta.28.3
Angular2 : 2.4.6

这是我在 app.module.ts 中的函数

 export function authFactory(auth : LoginService){
  return auth.loginUser();
}

提供者是这样的引用

{
  provide: APP_INITIALIZER,
  //useFactory: (auth: AuthService) => () => auth.authUser(),
  useFactory : authFactory,
  deps: [LoginService],
  multi: true
}

这一直在运行,直到我们将 angular cliAngular 22.1.0 升级到 2.4.6 .我们还将 cli 版本从 beta 18 升级到 28

现在,当应用程序启动时,它会在控制台中给出此错误,我确实看到该请求在 loginUser 方法中运行良好。但不知何故,它给出了有关 http post 请求中使用的 promise 的错误

Unhandled Promise rejection: appInits[i] is not a function ; Zone: ; Task: Promise.then ; Value: TypeError: appInits[i] is not a function

最佳答案

当使用的工厂函数返回undefined 时会发生此错误(至少在我的情况下)。

就我而言,我错误地翻译了:

useFactory: () => () => {}

useFactory: noop,
export function noop() {}

并解决它改变它:

export function noop(){}

export function noop() {
   return () => {};
}

...工厂是一个空函数的原因是因为我有一些实体应该在 DIC 中可用而没有任何实体显式注入(inject)它们

关于使用 ng serve 时 Angular2 APP Init [i] 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42114121/

相关文章:

angular - 带或不带括号的 formControlName?

angular - 我不能再将 forkjoin 与 rxjs 5.5.2 一起使用

angular - 有没有办法在不使用angular universal的情况下在angular app中添加元标记。?

javascript - 使用 Ionic 2,如何通过模式更改基于登录状态的按钮,以便在登录后将您发送到另一个页面?

angular - 将电容器相机结果转换为 Blob

css - Angular MdSelect 没有下划线未定义

javascript - 使用 JavaScript 在 Angular2 中绕过 SecurityTrustHtml 和绕过 SecurityTrustScript

angular - ngx-toastr 错误在用于登录的 else 语句中不起作用

angular - 无法在 Angular 4 中读取 null 的属性 'outlets'

angular - 子组件中的 formControlName