angular2 angular2.dev.js:23925异常:错误:未捕获(承诺中):没有提供
我正在尝试将一个具有配置文件(datService.configuration)的Angular服务(DataService)加载到一个组件(Home)中。在my Home组件中,如果未将DataServiceConfiguration添加到提供者列表,则会出现以下错误: “未捕获(承诺中):没有数据服务配置的提供程序!(主页->数据服务->数据服务配置)” dataService.ts:angular2 angular2.dev.js:23925异常:错误:未捕获(承诺中):没有提供,angular,angular2-providers,Angular,Angular2 Providers,我正在尝试将一个具有配置文件(datService.configuration)的Angular服务(DataService)加载到一个组件(Home)中。在my Home组件中,如果未将DataServiceConfiguration添加到提供者列表,则会出现以下错误: “未捕获(承诺中):没有数据服务配置的提供程序!(主页->数据服务->数据服务配置)” dataService.ts: import { Injectable } from 'angular2/core'; import {
import { Injectable } from 'angular2/core';
import { Http, Response, Headers, HTTP_PROVIDERS } from 'angular2/http';
import 'rxjs/add/operator/map'
import { Observable } from 'rxjs/Observable';
import { DataServiceConfiguration } from './dataService.configuration';
@Injectable()
export class DataService {
private actionUrl: string;
private headers: Headers;
constructor(private _http: Http, private configuration: DataServiceConfiguration) {
...
}
dataService.configuration.ts:
import { Injectable } from 'angular2/core';
@Injectable()
export class DataServiceConfiguration {
public Server: string = "http://localhost/";
public ApiPath: string = "api/v1/";
public ApiUrl = this.Server + this.ApiPath;
constructor() {
}
}
Home.ts
import { DataService } from '../services/dataService';
import { DataServiceConfiguration } from '../services/dataService.configuration';
import {
Headers,
Http,
HTTP_BINDINGS,
Request,
RequestOptions,
RequestOptionsArgs,
HTTP_PROVIDERS
} from 'angular2/http';
@ng.Component({
selector: 'home',
templateUrl: './ng-app/components/public/home/home.html',
directives: [AlbumTile, ProdutoTile, Promocao, SuperOfertas, Banner, Categorias, DestaquesDaHome],
providers: [DataServiceConfiguration, DataService]
})
export class Home implements ng.OnInit {
public lista: models.Lista;
public pagina: number = 1;
paginas: number = 1;
constructor(private http: Http, private _dataService: DataService) {
}
}
我不明白为什么我需要将DataServiceConfiguration添加到我的主组件中,因为我的DataService已经加载了它。有没有办法只将DataService添加到我的组件中?这有点奇怪,但只有组件可以在Angular中配置依赖项注入(以及
bootstrap()
,但这与根组件基本相同)。也就是说,只有组件可以指定提供者
如果组件具有指定的提供程序
数组,则组件树中的每个组件将获得关联的“注入器”。我们可以将其视为一个注入器树,它(通常)比组件树更稀疏。当需要(通过组件或服务)解决依赖关系时,将参考此注入器树。第一个能够满足依赖关系的喷油器就是这样做的。向上移动喷油器树,朝向根部件/喷油器
因此,为了让您的服务注入配置对象依赖关系,必须首先向注入器注册该配置对象。即,在组件的提供程序数组中。此注册必须发生在要使用/注入服务的组件的某个位置或其上方
然后,您的服务应该能够注入已注册的配置对象,因为它将在注入器树中找到它
另请参见。这有点奇怪,但只有组件可以在Angular中配置依赖项注入(以及bootstrap()
,但这与根组件基本相同)。也就是说,只有组件可以指定提供者
如果组件具有指定的提供程序
数组,则组件树中的每个组件将获得关联的“注入器”。我们可以将其视为一个注入器树,它(通常)比组件树更稀疏。当需要(通过组件或服务)解决依赖关系时,将参考此注入器树。第一个能够满足依赖关系的喷油器就是这样做的。向上移动喷油器树,朝向根部件/喷油器
因此,为了让您的服务注入配置对象依赖关系,必须首先向注入器注册该配置对象。即,在组件的提供程序数组中。此注册必须发生在要使用/注入服务的组件的某个位置或其上方
然后,您的服务应该能够注入已注册的配置对象,因为它将在注入器树中找到它
另见