返されたオブジェクトの$promise
プロパティにアクセスして、何らかのデフォルトアクション($resource
など)にアクセスする必要があります(削除、クエリなど)。
例:次に
interface IStudentDataModel {
name: string
age: number
}
interface IStudentResource extends IResourceClass<IStudentDataModel> {
deactivate(params: Object): IResource<IStudentDataModel>
}
export default function ($resource: IResourceService, CONFIG: IConfig): IStudentResource {
"ngInject"
let deactivateAction: IActionDescriptor = {
url: `${CONFIG.api_host}/students/:studentId/deactivate`,
method: 'PUT'
}
return <IStudentResource>$resource(
`${CONFIG.api_host}/students/:studentId`,
}
studentId: '@studentId'
},
{
deactivate: deactivateAction,
});
}
私は別のサービスでこのリソースを使用しています:私は学生のリソースを持っている
しかし、$resource
の現在の活字体の定義は不可能であると思われます
export default class StudentActions {
constructor(
private StudentResource: IStudentResource,
) {
"ngInject"
}
deactivate(studentId: number): IPromise<any> {
return this.StudentResource.deactivate({ studnetId: studentId}).$promise;
}
remove(studentId: number): IPromise<any> {
return this.StudentResource.remove({ studentId: studentId}).$promise; //!!!
}
}
問題:デフォルトアクションの戻り値がIStudentDataModel
であるため、this.StudentResource.remove({ studentId: studentId}).$promise
にアクセスできません。trype inste広告はIResource<IStudentDataModel>
です(ただし、データモデルだけでなく、$ promiseプロパティを持つリソースを返します)。
私はIStudentResource
でremoveメソッドをオーバーライドするために試してみた:
interface IStudentResource extends IResourceClass<IStudentDataModel> {
deactivate(params: Object): IResource<IStudentDataModel>
remove(params: Object): IResource<IStudentDataModel>
}
しかし、コンパイラは言う:
インターフェース 'IStudentResource' 誤っインタフェース を拡張して 'IResourceClass'。プロパティ 'remove'のタイプは と互換性がありません。 タイプ '(data:Object)=> IResource'はタイプ 'IResourceMethod'に割り当てられません。