[英]Angular2: issue injecting Http into service
我正在使用angular2并将Http
注入另一个服务时遇到问题。
这是我的boot.ts
文件:
import { bootstrap } from 'angular2/platform/browser';
import { provide } from 'angular2/core';
import { AppComponent } from './app.component';
import { appInjector } from './app-injector';
import { LoginService } from './services/login.service';
import { HTTP_PROVIDERS, Http } from 'angular2/http';
import { RouteConfig, ROUTER_DIRECTIVES, ROUTER_PROVIDERS,
LocationStrategy, HashLocationStrategy} from 'angular2/router';
bootstrap(AppComponent,
[ROUTER_PROVIDERS, LoginService, provide(
LocationStrategy, {useClass: HashLocationStrategy}
)]
).then((appRef) => {
// store a reference to the injector
appInjector(appRef.injector);
});
这是我的app.component.ts
文件:
import {Component} from 'angular2/core';
import {RouteConfig, ROUTER_DIRECTIVES, ROUTER_PROVIDERS,
LocationStrategy, HashLocationStrategy} from 'angular2/router';
import {LoginService} from './services/login.service';
import {HTTP_PROVIDERS, Http} from 'angular2/http';
@Component({
selector: 'my-app',
templateUrl: 'app/templates/app.tpl.html',
directives: [ROUTER_DIRECTIVES],
providers: [LoginService, HTTP_PROVIDERS]
})
export class AppComponent {
constructor(private _loginService: LoginService) { }
login() {
this._loginService.login();
}
}
这是令人讨厌的login.service.ts
文件:
import {Injectable} from 'angular2/core';
import {Http,Headers} from 'angular2/http';
@Injectable()
export class LoginService{
http: Http;
constructor(_http: Http) {
this.http = _http;
}
login(){
// do sth
}
}
问题出在login.service.ts
文件中的constructor
中。
当我删除构造函数中的参数时(离开constructor(){}
),页面呈现正确。 当我保留Http
参数时,该页面不会呈现,而是在浏览器控制台中看到: Uncaught SyntaxError: Unexpected token <
error。
我需要将Http
注入我的LoginService
,但是我找不到问题所在。 我看过一些博客和SO问题,例如, 在这里 ,但是没有运气。
您在两个文件中使用Http模块,但HTTP_PROVIDERS导入仅在组件中。 从组件中删除它并添加到您的启动文件中。
bootstrap(AppComponent,
[HTTP_PROVIDERS, ROUTER_PROVIDERS, LoginService, provide(
LocationStrategy, {useClass: HashLocationStrategy}
)]
).then((appRef) => {
// store a reference to the injector
appInjector(appRef.injector);
});
我认为您忘记将http.dev.js文件添加到HTML文件中:
<script src="node_modules/angular2/bundles/http.dev.js"></script>
这可能是导致错误的原因:“意外令牌<”。
希望对您有帮助,蒂埃里
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.