Thr*_*nts 5 typescript angular
我只是测试Angularjs2.0但是我遇到了向一个类注入服务的问题.这是我的代码:
import {Component, View, bootstrap, NgFor, HttpService, Promise} from 'angular2/angular2';
@Component({
selector: 'meeting-form',
appInjector: [MeetingService]
})
@View({
template: `
<ul>
<li *ng-for="#meeting of meetings">
Meeting Room: meeting room {{meeting.room}}
Date: {{meeting.date}}
Time: {{meeting.time}}
</li>
</ul>
<select #room>
<option value="1">Meeting Room 1</option>
<option value="2">Meeting Room 2</option>
</select>
<input type="date" #date>
<input type="time" #time>
<button (click)="reserveMeeting(room.value, date.value, time.value)">Reserve</button>
`,
directives: [NgFor]
})
class MeetingFormComponent{
meetings: Array;
constructor(meetingService: MeetingService){
this.meetings = meetingService.getMeetings();
}
reserveMeeting(room: number, date: string, time: string, meetingService: MeetingService){
meetingService.postMeeting(room, date, time);
}
}
class MeetingService {
http: HttpService;
constructor(http: HttpService) {
this.http = http;
}
getMeetings() {
return this.http.get('/meetings').then(function(data){
return data.meetings;
})
}
postMeeting(room: number, date: string, time: string){
return this.http.post('/meetings', {"room": room, "date": date, "time": time}).then(function(data){
return data.meeting;
})
}
}
bootstrap(MeetingFormComponent);
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
EXCEPTION: Error during instantiation of Token(Promise<ComponentRef>)!.
ORIGINAL EXCEPTION: Cannot resolve all parameters for MeetingFormComponent(undefined). Make sure they all have valid type or annotations.
我正在查看文档,看起来这正是他们注入服务的方式.我错过了一步吗?我也试过引导服务类,但是没有用.
将您的服务标记为可注射,如下所示:
import {Injectable} from 'angular2/core';
@Injectable()
class MeetingService { ... }
Run Code Online (Sandbox Code Playgroud)
你可以在这里阅读更多相关信息
如果您的代码全部在1文件中,如上所示,则更新,然后您需要将服务定义移到组件上方,因为ES6(ES2015)中的类不会因为ES5中的函数而被提升.
| 归档时间: |
|
| 查看次数: |
472 次 |
| 最近记录: |