🧠
ngx-crud
  • Introduction
  • API
    • HTTP Operations
    • HTTP Aborting
    • HTTP Caching
    • HTTP Observing
    • HTTP Options
    • HTTP Context
    • HTTP Headers
    • HTTP Params
    • Service Instance
    • Service Options
  • Reference
    • Modules
      • AbortModule
      • CacheModule
      • ObserveModule
      • CrudModule
    • Services
      • AbortService
      • CacheService
      • CommonService
      • CrudService
      • CustomService
      • DeleteService
      • FindService
      • GetService
      • ObserveService
      • PatchService
      • PostService
      • PutService
    • Interceptors
      • AbortInterceptor
      • CacheInterceptor
      • ObserveInterceptor
    • Decorators
      • @ApiUrl
      • @ApiRoute
    • Helpers
      • createUrl
      • createUrlWithId
      • stripUrlParams
  • Examples
    • Services
      • Fully Typed Collection
      • Limited Singleton
    • Components
      • Loader
    • Effects
      • ProfilerEffect
      • ErrorEffect
      • OfflineEffect
  • Links
    • GitHub
Powered by GitBook
On this page
  1. Examples
  2. Services

Fully Typed Collection

Implementation for a collection resource that is fully typed:

import { Injectable } from '@angular/core';
import { ApiUrl, ApiRoute, CrudService } from 'ngx-crud';
import { RequestBody, ResponseBody } from './example.interface';

import { environment } from '@environments';

@Injectable()
@ApiUrl(environment.apiUrl)
@ApiRoute(environment.apiRoutes.example)
export class ExampleService extends CrudService<RequestBody, ResponseBody>
{
}

Each method types are generated by this default mapping:

RequestBody,
ResponseBody,
CreateRequestBody = RequestBody,
CreateResponseBody = ResponseBody,
ReadResponseBody = ResponseBody,
FindResponseBody = ResponseBody[],
UpdateRequestBody = RequestBody,
UpdateResponseBody = ResponseBody,
PatchRequestBody = Partial<RequestBody>,
PatchResponseBody = ResponseBody,
DeleteResponseBody = ResponseBody,
CustomRequestBody = RequestBody,
CustomResponseBody = ResponseBody | ResponseBody[]

Create a CrudServiceCustom that meets your API standard:

import { Injectable } from '@angular/core';
import { CrudService } from 'ngx-crud';

@Injectable()
export class CrudServiceCustom<
	RequestBody,
	ResponseBody,
	CreateRequestBody = RequestBody,
	CreateResponseBody = ResponseBody,
	ReadResponseBody = ResponseBody,
	FindResponseBody = ResponseBody[],
	UpdateRequestBody = RequestBody,
	UpdateResponseBody = void,
	PatchRequestBody = Partial<RequestBody>,
	PatchResponseBody = void,
	DeleteResponseBody = void,
	CustomRequestBody = RequestBody,
	CustomResponseBody = ResponseBody | ResponseBody[]
> extends CrudService<
	RequestBody,
	ResponseBody,
	CreateRequestBody,
	CreateResponseBody,
	ReadResponseBody,
	FindResponseBody,
	UpdateRequestBody,
	UpdateResponseBody,
	PatchRequestBody,
	PatchResponseBody,
	DeleteResponseBody,
	CustomRequestBody,
	CustomResponseBody
>
{
}
PreviousServicesNextLimited Singleton

Last updated 3 months ago