我已經在Angular 2中編寫了兩個服務。其中一個是基本的定製類Http
,它具有一些自定義功能(現在看起來很基本,但它將會擴展):Angular 2 - 服務 - 從另一個服務的依賴注入
ServerComms.ts
import {Injectable} from 'angular2/core';
import {Http} from 'angular2/http';
@Injectable()
export class ServerComms {
private url = 'myservice.com/service/';
constructor (public http: Http) {
// do nothing
}
get(options) {
var req = http.get('https://' + options.name + url);
if (options.timout) {
req.timeout(options.timeout);
}
return req;
}
}
另一類,TicketService
利用這個類的上方,並調用在服務的方法之一。這被定義如下:
TicketService.ts
import {Injectable} from 'angular2/core';
import {ServerComms} from './ServerComms';
@Injectable()
export class TicketService {
constructor (private serverComms: ServerComms) {
// do nothing
}
getTickets() {
serverComms.get({
name: 'mycompany',
timeout: 15000
})
.subscribe(data => console.log(data));
}
}
不過,我收到以下錯誤,每當我試試這個:
"No provider for ServerComms! (App -> TicketService -> ServerComms)"
我不明白爲什麼?當然,我不需要注入其他服務所依賴的每項服務?這會變得非常乏味?這在Angular 1.x中可以實現 - 我如何在Angular 2中實現同樣的效果?
這是正確的做法嗎?