有角。使用 APP_INITIALIZER 时路由器 DI 不工作

2023-12-23

我正在从服务器预加载应用程序配置APP_INITIALIZER通过以下方式,AppModule:

providers: [
    ConfigService,
    {
      provide: APP_INITIALIZER,
      useFactory: configServiceFactory,
      deps: [ConfigService],
      multi: true
    }
  ],

Then, ApiService手动注入ConfigService:

@Injectable()
export class ConfigService {

  private api: ApiService;

  public constructor(
    private injector: Injector
  ) {

    // Avoid cyclid dependencies, inject manually:
    this.api = injector.get(ApiService);
  }

最后router注入时未定义ApiService

import { Http, Headers, RequestOptionsArgs, Response } from '@angular/http';
import { Router } from '@angular/router';

@Injectable()
export class ApiService {

  constructor(
    private router: Router,
    private http: Http
  ) {

    console.log(router, 'router'); // undefined
    debugger;

Here is plunker http://plnkr.co/edit/ogCHjeYuCDM8vNLdwAFx?p=preview

有什么想法可以解决/解决它吗?


这适用于角度 4

import { APP_INITIALIZER, Provider, Injector } from '@angular/core';

export function appInitializerFactory(
    injector: Injector
): () => Promise<any> {
    return () => {
        return new Promise<any>((resolve, reject) => {
            setTimeout(() => {
                const router = injector.get(Router);
                // do stuff
                resolve(this.config);
            });
        });
    }
}

export const appInitializerProvider: Provider = {
    provide: APP_INITIALIZER,
    useFactory: appInitializerFactory,
    deps: [
        Injector
    ],
    multi: true
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有角。使用 APP_INITIALIZER 时路由器 DI 不工作 的相关文章

  • 使用许多嵌套的 switchMap 是不好的做法吗?

    我有 HTTP 拦截器 在该拦截器中 在更改请求之前 我需要打开一个加载程序 真正让我担心的是我最终会得到很多switchMaps why 加载器是异步的 我还需要将从拦截器传递的消息转换为加载器服务 翻译消息也是异步的 在拦截器中 我应该
  • Angular 6 HTTP 客户端发布 - 错误请求

    我有以下问题 我有一个 API 所在的服务器 我将请求发送到注册端点 但作为响应 我收到 400 错误请求错误 指出必须填写姓名 电子邮件等 问题是它们已经满了 我不再怀念创意了 我的代码 import Component from ang
  • Angular 2 + Auth0(找不到模块“auth0-js”的声明文件。)

    找不到模块 auth0 js 的声明文件 C sandbox loginauth0 node modules auth0 js src index js 隐式具有 any 类型 我想使用 auth0 登录 但在按照说明构建我自己的 Angu
  • 具有动态名称的 Angular Material 2 日期选择器

    我正在尝试实现具有动态名称的日期选择器组件 我正在使用 Angular 4 开发基于 Angular Material 2 的项目 这是我的实现
  • 是否可以使用纯 css 禁用 mat-tab 动画

    我想禁用 Angular Material mat tab 动画 内容滑入到位时发生的动画 我知道可以使用 disabled 属性 但我想知道是否可以使用纯 css 达到相同的效果 EDIT 我们的用户体验团队希望从材质选项卡中删除幻灯片动
  • Angular 7 Guard 重定向仅适用于双击

    问题是我已经实现了一个 Guard 旨在处理特定的目录 如果当前用户名的角色等于 2 它应该返回 true 如果没有 那么它不应该重定向 这是我的 app routing module ts 文件 问题出在 userlist 路径中 我们是
  • 创建本身异步的自定义管道

    我创建了一个自定义管道 用于从 API 检索文本内容 如下所示 Pipe name apiText export class ApiTextPipe implements PipeTransform constructor private
  • 如何将数组数据作为formdata Angular 4发送

    我尝试发布一组数据未发送到服务器 网络服务 deleteCategory return this http post http www demo webapi deletecategory headers Authorization Tok
  • 如何将属性绑定到 style.width (以像素为单位)?

    我正在使用 Angular 2 并且编写了以下代码 div some texts div 我也尝试过 div some texts div export class MyComponent width number 150 但它并不将宽度绑
  • ionic 2 google 图表未捕获类型错误:(void 0) 不是函数

    error 我想添加谷歌图表并按照这个https www npmjs com package angular2 google chart https www npmjs com package angular2 google chart 但
  • 如何按顺序使用 RxJS 可观察量?

    事情是这样的 我有一个 HTTP get 请求 它返回一个 JSON 对象列表 我使用 RxJS 订阅接收该列表的数据 现在 对于该列表中的每个对象 我想执行另一个 HTTP 请求 然后将该请求的结果放入数组中 到目前为止 我已经能够做到这
  • 类型错误:无法读取未定义的属性“post”

    嗨 我只想使用一个简单的功能 http post 将我的日期发布到页面 我希望服务器能够获取我发布的日期 import Component OnInit from angular core import MarginServcies fro
  • 如何为角度中的备用列添加背景颜色

    我使用角度材料垫桌子组件创建了一个简单的角度桌子 使用下面的样式我可以为备用行着色 但是当我将下面的样式中的行更改为列时 这不适用于列 mat row nth child even background color f2f4f7 mat r
  • 如何以角度从守卫重定向到子路线

    如何从父路由的守卫重定向到子路由 同时保护子路由不被直接访问 绝对导航的问题当导航到子路由时 父组件上的守卫会在循环中再次调用 相对导航问题是警卫正在保护父路线 因此还没有激活的路线可供导航 此外 这可能不会保护子路由 也许同一个守卫也可以
  • 使用 Javascript 在前端创建基本 URL(开发、API 和生产)

    无论开发和部署如何 如何制作适用于 http https localhost 端口和实际域的基本 url 我想创建一个可以在所有场景或条件下工作的基本 url 无论 http https 协议 端口 本地主机和实际域如何 无论是在开发中还是
  • 在 C# 中解析 JS Date.toIsoString

    我需要将 JS 日期存储为 ISO 8601 日期 我目前正在从格式为 2019 06 22T00 00 00 000Z 的表单中获取日期 正如 JS 的 toIsoString 方法所期望的那样 当这个日期传递到我的 API 控制器时 我
  • For-each 在 ionic2 和 angularjs2 中

    我用 IONIC 2 Beta 版本制作了一个应用程序 我想用for each环形 是否可以在 Angular V2 中使用每个 Thanks 首先在Component 您必须声明要显示的数组 import Component from a
  • 如何重启ngOnInit来更新Interpolation

    有办法重新启动吗ngOnInit 改变变量时 因为我想重新开始ngOnInit 改变时theme多变的 这是我的代码 设置 ts export class SettingsPage implements OnInit phraseColor
  • 运行 Angular 应用程序:错误:0308010C:数字信封例程::不支持[重复]

    这个问题在这里已经有答案了 当我尝试运行角度应用程序时发现此错误 有什么建议吗 Error error 0308010C digital envelope routines unsupported at new Hash node inte
  • Angular 应用程序在 IE11 中给出空白页面

    Angular应用程序仅加载于Internet Explorer浏览器版本 当开发人员工具 F12 侧边栏打开时 没有使用任何 MDL 组件 因此它不同于this https github com google material desig

随机推荐

  • Rails 和 标签

    我对 Ruby on Rails 相当陌生 我正在尝试使用 滑动门 技术创建一些精美的 CSS 按钮 我几乎可以正常工作了 但我觉得必须有更好的方法来处理链接的标签 我目前正在做的方式 这本身并不可怕 但我想知道这是否是在 RoR 中处理跨
  • 为什么 Windows 32 位称为 Windows x86 而不是 Windows x32? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Windows 操作系统可以是 32 位或 64 位 这64 bit版本称为Windows x64但是32 bit版本称为Windows
  • 使用 Anaconda 下载 Random.py

    我正在尝试下载随机模块 想知道是否复制代码并将其放入文件编辑器中 如何通过 pip 安装它 我将代码放在记事本中 并将其保存在桌面上 名称为 random py 我现在该怎么做才能通过 anaconda 安装它 我尝试了 pip insta
  • Django:扩展用户模型与创建用户配置文件模型

    我正在 Django 中创建一个应用程序 到目前为止我一直在使用扩展用户模型 如下所示 class MyUser AbstractBaseUser 包含所有用户和个人资料信息 但我看到很多人在堆栈溢出上为个人资料和用户本身创建不同的模型 使
  • 在正则表达式替换中捕获字符串

    根据我从 Pharo 正则表达式文档中收集到的信息 我可以定义一个正则表达式对象 例如 re foo re bar asRegex 我可以通过以下方式将匹配的正则表达式替换为字符串 re copy foobar blah rebar rep
  • ASP.NET MVC 从单个视图向相关多个表添加记录

    我对 MVC 很陌生 所以如果我没有正确解释我的要求 没有使用正确的术语 我深表歉意 我有一个简单的数据库item and detail实体 它们具有一对多的关系 因此 Item 有许多详细信息 我想从单个视图向这两个表添加记录 到目前为止
  • 如何更改 UISearchBar 占位符和图像色调颜色?

    我已经尝试了几个小时的搜索结果 但我无法弄清楚这一点 也许这是不可能的 我正在尝试更改占位符文本和 UISearchBar 放大镜的色调颜色 如果重要的话 我只针对 iOS 8 0 这是我的代码以及现在的样子 let searchBar U
  • Robotium:如何在 Intellij IDEA 中为现有项目创建测试项目?

    我一直在为现有项目创建一个测试项目 对于 Eclipse 来说很简单 但是对于 IntelliJ 我被迫在工作场所使用它 我真的不知道如何使用 Robotium 框架测试项目 如果有人可以写一些明确的步骤来解释这一点 我将不胜感激 在 In
  • 为什么 Python 中的某些列表方法仅适用于已定义的变量? [复制]

    这个问题在这里已经有答案了 gt gt gt a 1 2 3 gt gt gt a append 4 gt gt gt a 1 2 3 4 But gt gt gt 1 2 3 append 4 gt gt gt Why do list h
  • Swift 中的多维数组

    编辑 正如 Adam Washington 指出的那样 从 Beta 6 开始 这段代码按原样工作 所以这个问题不再相关 我正在尝试创建并迭代二维数组 var array Array count NumColumns repeatedVal
  • 如何使用Excel VBA确定文件编码类型

    我构建了一个 Excel VBA 工具来验证 csv 文件 以确保它们包含的数据有效 它们的 csv 可以来自任何地方 来自完整的 UNIX 系统或从 Excel 保存数据的桌面用户 Excel 工具被发送给企业 以便他们可以在自己的环境中
  • 如何创建列表集合的深层副本

    假设我有以下课程 public class Author public int ID get private set public string firstName get private set public string lastNam
  • 无法在我的 Android 应用程序中播放 mp4 视频

    我非常想在我的 Android 应用程序中播放 mp4 视频 我什至为它写了一些代码 String sourceUrl http tvstream cn ru storage 1kanal 20120530 1kanal 20120530
  • C++ 重写方法

    我不明白这是怎么回事 我有一个场景类 它具有实体向量 并允许您从场景中添加和获取实体 class Scene private PRIVATE DATA vector
  • Marklogic (Nodejs API) - 搜索与对象数组属性中的 2 个(或更多)条件匹配的文档

    我的文档存储在 marklogic 中的 JSON 中 如下所示 我删除了我的案例中无用的属性 documentId languages locale en UK content translated true locale de DE c
  • 自动保存图片到本地

    我是 javascript 和 html5 的新手 我正在做我的大学项目 我正在创建一个基于网络的照片捕捉系统 是否可以自动将图像保存到本地存储 用户点击捕获按钮后 供参考 当用户点击捕获按钮时 它会激活此功能 function conte
  • 检测vb.net中文本的宽度

    有没有办法检测 vb net Web 应用程序中文本的实际宽度 它需要依赖于它的字体样式和大小 在 vb6 中 您可以将文本复制到标签中并使其扩展以适合然后测量其宽度 但这在 vb net 中不起作用 Update 经进一步检查 TextR
  • 为什么这段代码显示答案为 6? [复制]

    这个问题在这里已经有答案了 我的一个同学问了这个问题 我想确定我告诉他的是正确的答案 本质上 下面的代码 确实显示 6 作为答案 在到达 MessageBox Show i ToString 时让他感到困惑 我的解释是递减操作 i 实际上并
  • E0701 OOZIE 工作流程中的 XML 架构错误

    以下是我的workflow xml
  • 有角。使用 APP_INITIALIZER 时路由器 DI 不工作

    我正在从服务器预加载应用程序配置APP INITIALIZER通过以下方式 AppModule providers ConfigService provide APP INITIALIZER useFactory configService