這是打字稿中角度爲$resource
的示例使用。在這個例子中,我試圖在我定義的資源上創建更新操作,就像在https://docs.angularjs.org/api/ngResource/service/ $資源中完成一樣。我也返回一個實例ng.resource.IResourceClass<IVenueResource>
module app.common {
interface IVenueService{
}
export interface IVenueResource extends ng.resource.IResource<app.domain.IVenue>{
update(IVenue: app.domain.IVenue) : app.domain.IVenue;
}
export class VenueService implements IVenueService{
static $inject = ["$resource", "url"];
constructor(private $resource: ng.resource.IResourceService, private url: URL_CONSTANTS){
}
getVenueResource(): ng.resource.IResourceClass<IVenueResource>{
// Define custom action as IActionDescriptor
var updateAction : ng.resource.IActionDescriptor = {
method: 'PUT',
isArray: false
};
return <ng.resource.IResourceClass<IVenueResource>>
this.$resource(this.url.BASE_API+"/v1/venues/:id", {id: '@id'} ,{
update: updateAction
});
}
}
angular
.module("common.services")
.service("venueService", VenueService);
}
現在的時間來使用資源,資源是通過我的類實現的接口定義。但我仍然得到一個錯誤,我如何讓打字字典識別更新方法。
module app.Venue {
interface INavigationScope{
venueResource: ng.resource.IResourceClass<app.common.IVenueResource>;
}
class VenueListCtrl implements INavigationScope {
venueResource: ng.resource.IResourceClass<app.common.IVenueResource>;
}
sample(){
var updatedVenue =this.venueResource.update({id: 1, name: 'Amphitheather'},
()=> {});
}
}