javascript - 如何在提供者内部使用提供者

标签 javascript angular

我使用的是ionic2,也就是Angular2,但是这个问题更多是Angular2而不是Ionic框架。我有一个这样的提供者:

import {Injectable, Provider, Inject} from '@angular/core';
import {Http, Response, Headers} from '@angular/http';

@Injectable()
export class MyFirstProvider{

  constructor( @Inject(Http) http) {
      this.http = http;
  }
.
.
.

我有另一个提供商,例如:

import {Injectable, Provider, Inject} from '@angular/core';
import {Http, Response, Headers} from '@angular/http';

@Injectable()
export class MySecondProvider{

  constructor( @Inject(Http) http) {
      this.http = http;
  }

  myCoolFunction(){
    console.log('I am one cool function'); 
  }
.
.
.

如何在 MyFirstProvider 中使用 MySecondProvider 的 myCoolFunctions?

最佳答案

通过注入(inject)

@Injectable()
export class MyFirstProvider{

  constructor(private http:Http, 
      private mySecond: MySecondProvider) {}

  someMethod(){
    this.mySecond.myCoolFunctions();
  }
}

这些类是服务,而不是提供者。这些服务可以而且需要注册为提供商。提供者是键和值构建指令的组合。 当 DI 查找类型(键)时,它会搜索组件注入(inject)器及其父注入(inject)器,直到找到具有匹配键的注入(inject)器,然后返回其实例(服务)。

关于javascript - 如何在提供者内部使用提供者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37490193/

相关文章:

javascript - 添加延迟到这个时事通讯弹出代码 - jQuery Modal Window Popup Code

javascript - 嵌套的 json 需要借助 Angular 以树结构格式动态显示

angular - 有什么方法可以不在 Angular 2 或更高版本的 html 上显示组件名称?

angular - 在 ionic2 中打开时出现错误 : ENOENT: no such file or directory,

返回旧步骤时,Angular Material Stepper 会导致 mat-form 字段验证动态表单

angular - 我的 Angular 8 路线是否因为层次结构太深而无法正常工作?

javascript - 在 Cucumber.js 中是否可以列出所有可用的步骤?

javascript - 更改img src不显示图像

javascript - 如何实现长时间的网页加载?

javascript - 添加了 contenteditable ="true"的 DIV 不关注点击