我有一个Angular2应用程序,我在其中创建了一个服务。现在我想扩展服务以从Web API获取一些数据。我跟随角度团队的开发者指南: https://angular.io/docs/ts/latest/guide/server-communication.html
阅读有关注入服务的精美指南: http://blog.thoughtram.io/angular/2015/09/17/resolve-service-dependencies-in-angular-2.html
但我一直得到同样的错误:
无法解析' UserService'(?)的所有参数。确保所有参数都使用Inject进行修饰或具有有效的类型注释以及“UserService'用Injectable装饰。
我在boostrap中添加了两个提供:
import "zone.js/dist/zone.min.js";
import "reflect-metadata";
import 'rxjs/Rx';
import { HTTP_PROVIDERS } from 'angular2/http';
import { bootstrap } from "angular2/platform/browser";
import { UserService } from '../userservice';
import { PublicappComponent } from './publicapp.component';
bootstrap(PublicappComponent, [HTTP_PROVIDERS, UserService]);
这是我的简单UserService.ts:
import {Injectable} from 'angular2/core';
import {Http, Response} from 'angular2/http';
import {Observable} from 'rxjs/Observable';
import {Headers, RequestOptions} from 'angular2/http';
import {UserModel} from './usermodel';
@Injectable()
export class UserService {
constructor(http: Http) { }
private url = 'api/user';
}
我在Angular2周围使用jspm。
答案 0 :(得分:0)
您是否在您的HTML条目文件中包含http.dev.js
文件:
(...)
<script src="https://code.angularjs.org/2.0.0-beta.7/angular2.dev.js"></script>
<script src="https://code.angularjs.org/2.0.0-beta.7/http.dev.js"></script>
修改强>
由于Jspm允许实现基于ES6的Angular2应用程序(不是TypeScript),因此您无法使用方法参数级别的类型。因此,您需要为parameters
字段添加静态getter:
@Injectable()
export class UserService {
private url = 'api/user';
constructor(http) { }
static get parameters() {
return [[Http]];
}
}
有关详细信息,请参阅此plunkr:https://plnkr.co/edit/ymSUUCvG5NFvmCGqzj2r?p=preview