Angular 2将服务注入扩展类(BaseRequestOptions)

2023-12-01

我有以下代码扩展BaseRequestOptions class:

import { Injectable } from '@angular/core';

@Injectable()
export class AppRequestOptions extends BaseRequestOptions {
    constructor(private serviceA:ServiceA) {       
        super();        
    }   
    merge(options?: RequestOptionsArgs): RequestOptions {        
        console.log(this.serviceA);
        //this.serviceA.myCustomMethod();
        return super.merge(options);
    }
}

当我参考this.serviceA值为undefined。当我将相同的服务注入其他服务/组件时,它会按预期工作。

这是完整的引导代码:

import { Injectable } from '@angular/core';
import { bootstrap }    from '@angular/platform-browser-dynamic';
import { AppComponent } from './app.component';
import { APP_ROUTER_PROVIDERS  } from './routes';
import { HTTP_PROVIDERS, BaseRequestOptions, RequestOptions, RequestOptionsArgs, Headers } from '@angular/http';
import { ServiceA } from './ServiceA';

@Injectable()
export class AppRequestOptions extends BaseRequestOptions {
    constructor(private serviceA:ServiceA) {       
        super();        
    }   
    merge(options?: RequestOptionsArgs): RequestOptions {        
        console.log(this.serviceA);
        //this.serviceA.myCustomMethod();
        return super.merge(options);
    }
}

bootstrap(AppComponent, [
    APP_ROUTER_PROVIDERS,
    HTTP_PROVIDERS,  
    ServiceA,
    { provide: RequestOptions, useClass: AppRequestOptions }
]).catch(err => console.error(err));

ServiceA宣言:

import { Injectable } from '@angular/core';

@Injectable()
export class ServiceA {
    myCustomMethod() {
     
    }
}

我正在使用 Angular 版本2.0.0-rc.4

我不确定是否是因为我正在扩展一个类并将其标记为@Injectable() ?

我已经检查过,我能找到的唯一相关问题是:

在我的 Angular 2 应用程序中的服务内注入服务

Angular 2:将服务注入另一个服务。 (没有提供商错误)

UPDATE

似乎它与一个未解决的错误有关:https://github.com/angular/angular/issues/8925


有一个未解决的错误:https://github.com/angular/angular/issues/9758.

尽管正确设置了依赖项注入的元数据,但该元素并未在构造函数级别提供给类实例。

@Injectable()
export class AppRequestOptions extends BaseRequestOptions {
  constructor(private serviceA:ServiceA) {       
    super();        
    console.log(Reflect.getMetadata('design:paramtypes', AppRequestOptions));
    console.log(Reflect.getMetadata('parameters', AppRequestOptions));
  }

  (...)
}

请参阅此 plunkr 了解更多详细信息:https://plnkr.co/edit/hcqAfsI7u88jbjScq6m3?p=preview.

Edit

如果你使用的话它将起作用RequestOptions类而不是BaseRequestOptions one:

@Injectable()
export class AppRequestOptions extends RequestOptions {
  constructor(private serviceA:ServiceA) {       
    super();        
  }   

  (...)
}

看看这个笨蛋:https://plnkr.co/edit/laP04kqUCOR5qbFgo0iM?p=preview.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular 2将服务注入扩展类(BaseRequestOptions) 的相关文章

随机推荐

  • 使用php/Java读取foxpro DB

    我正在寻找一个代码片段 库 用于使用 Linux 服务器上的 php Java 通过网络从第三方 Foxpro DB 读取数据 有可用的图书馆吗 有些人似乎在使用 php 的 Dbase 库 那样有用吗 除了默认值 数据库名 用户名 密码
  • 如何在已经存在于pdf.js中的canvas中绘制矩形

    我在这里使用 pdf js 在画布中渲染我的 pdf 我的代码是 div div class pdfViewer div div 上面的canvas是通过viewer js生成的 现在我试图在我的pdf上绘制矩形 但它没有显示我的矩形 我的
  • 使用 CreateProcess 函数启动时,cmd.exe 在某些情况下不会终止

    我正在通过 C 程序使用 CreateProcess 函数执行批处理命令 我通过检查进程退出代码是否等于除 STILL ACTIVE 之外的任何值来检查进程是否已使用 GetExitCodeProcess 函数终止 这适用于 cmd c e
  • 谷歌服务添加了强制关闭应用程序并显示日志猫错误

    我一直在开发一个简单的应用程序来加载地图视图 我已经遵循了API https developers google com maps documentation android start add a map BUT 执行应用程序强制关闭并出
  • 在WPF中获取数据网格中的多个选定行?

    我想在 WPF 中获得数据网格的多重选择 因为我的业务要求我在数据网格中有一个客户表 它允许多重选择和单选按钮 全部 选定 除选定之外的所有 如果单击选定的或未选定的所有客户 我必须仅提取数据网格中选定的那些客户的数据 请建议解决方案以获取
  • 从 MySQL 数据库中读取一行中的一列

    有没有一种快速而肮脏的方法来从一行中获取一列的值 现在我使用这样的东西 result mysql query SELECT value FROM table WHERE row id 1 row mysql fetch array resu
  • 默认情况下选择 ManyToManyField 中的所有选项

    默认情况下是否可以选择 Django 中 ManyToManyField 生成的多个选择中的所有选项 添加的所有新项目都应在视图中预先选择所有选项 也在添加新项目时 AnotherEntity class AnotherEntity mod
  • 根据可用性在 GPS 和网络提供商之间切换

    public void onCreate locationListener new GeoUpdateHandler locationManager LocationManager getSystemService Context LOCA
  • 在两列上使用 pandas 进行因式分解

    我在 pandas 数据框中有一些数据 如下所示 CAR TYPE MILEAGE FORD 100 FORD 100 FORD 200 FORD 300 VW 100 VW 150 VW 150 VW 300 我想对数据进行 因式分解 为
  • C# FTP 550错误

    我正在尝试通过 FTP 以编程方式下载 C 中的文件 以下是相关代码 显然带有伪造的凭据和 URI try var request FtpWebRequest Create ftp ftp mydomain com folder file
  • Zxing条码源码集成到Android项目中[重复]

    这个问题在这里已经有答案了 我想将 zxing 源代码集成到我的 Android 应用程序中 我已经下载了 zxing1 5 并将整个代码集成到我的应用程序中 并且我通过意图调用活动 CaptureActivity 它仅显示相机视图 但不扫
  • 当 WooCommerce 中有运费时如何隐藏免费送货

    我正在尝试计算乔治亚州不同城市的运费 我找到了这段代码 function ace change city to dropdown fields cities array Tbilisi city2 etc city args wp pars
  • 将类标记为final是否也会使每个函数成为final?

    正如标题所说 我想知道是否通过将类设为final 并让编译器进行速度优化 我是否还需要将函数标记为final 否则它们会自动变为final final应用于类使其不可子类化 因此在任何情况下您都不能覆盖任何函数或属性 因为为此您必须创建一个
  • 使用 COM 时,为什么 TypeName() 从 .GetType 和 TypeOf 返回不同的结果?

    我觉得了解这些函数工作原理的差异会让我受益匪浅 这样我就可以更好地理解何时使用每个函数 我在使用两种不同的互操作性 Excel 和 EPDM 时遇到了非常困难的情况 这两种互操作性都广泛使用了弱类型参数 我在使用返回的对象并将其转换为正确的
  • 防止屏幕捕获软件捕获应用程序屏幕

    我正在研究考试系统 作为系统的安全部分 我不希望任何人通过屏幕录制或使用如此多的免费应用程序进行桌面共享来远程泄露试卷 首先我搜索我可以阻止此类应用程序吗 但我不这么认为 因为记录 共享屏幕的方法有很多 然后我开始了解 HDCP 但我想它只
  • S3 到 Redshift:复制但访问被拒绝

    我们以前每天使用 COPY 命令从没有特定策略的存储桶将文件从 s3 复制到 Redshift COPY schema table staging FROM s3 our bucket X YYYY MM DD CREDENTIALS aw
  • 计算字符串中的大写字母

    如何使用 MySQL 查询计算大写字母 我现在正在尝试 COUNT IF MATCH post text AGAINST A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 1 NULL
  • Vue-router4 - 使用 传递对象不会传递动态数据

    我经历过这个 电子邮件受保护 对象参数这是有一定关系的 有提到这个https github com vuejs vue router next issues 494在那条线索中 但我仍然很困惑 我还尝试使用传递一些数据 to的属性路由器链接
  • 为什么使用 loc 和切片分配给数据帧与使用单列分配不同?

    我正在尝试将列从浮点型更新为整数型 考虑df在以下两种场景中 df pd DataFrame dict A 1 1 2 B 1 2 print df A dtype df loc A df A astype int print df A d
  • Angular 2将服务注入扩展类(BaseRequestOptions)

    我有以下代码扩展BaseRequestOptions class import Injectable from angular core Injectable export class AppRequestOptions extends B