0
# Data Services
1
2
NgRx data services generation schematic that creates data services integrating with @ngrx/data for entity-based data management with automatic HTTP operations.
3
4
## Capabilities
5
6
### Data Schematic
7
8
Generates data services with @ngrx/data integration for automated entity management and HTTP operations.
9
10
```bash
11
# Basic data service
12
ng generate @ngrx/schematics:data User
13
```
14
15
```typescript { .api }
16
interface DataSchema {
17
name: string;
18
path?: string;
19
project?: string;
20
flat?: boolean;
21
}
22
```
23
24
### Generated Data Service
25
26
Creates entity data service with automatic CRUD operations:
27
28
```typescript
29
// Generated data service
30
import { Injectable } from '@angular/core';
31
import { EntityCollectionServiceBase, EntityCollectionServiceElementsFactory } from '@ngrx/data';
32
33
@Injectable()
34
export class UserDataService extends EntityCollectionServiceBase<User> {
35
constructor(serviceElementsFactory: EntityCollectionServiceElementsFactory) {
36
super('User', serviceElementsFactory);
37
}
38
}
39
```
40
41
### Entity Metadata Configuration
42
43
Configures entity metadata for @ngrx/data:
44
45
```typescript
46
// Entity metadata
47
import { EntityMetadataMap } from '@ngrx/data';
48
49
export const entityMetadata: EntityMetadataMap = {
50
User: {
51
selectId: (user: User) => user.id,
52
sortComparer: (a: User, b: User) => a.name.localeCompare(b.name)
53
}
54
};
55
```
56
57
### HTTP Data Service
58
59
Custom HTTP data service for specialized operations:
60
61
```typescript
62
// Custom HTTP data service
63
import { Injectable } from '@angular/core';
64
import { DefaultDataService, HttpUrlGenerator } from '@ngrx/data';
65
import { HttpClient } from '@angular/common/http';
66
import { Observable } from 'rxjs';
67
68
@Injectable()
69
export class UserHttpDataService extends DefaultDataService<User> {
70
constructor(http: HttpClient, httpUrlGenerator: HttpUrlGenerator) {
71
super('User', http, httpUrlGenerator);
72
}
73
74
// Custom methods
75
searchUsers(query: string): Observable<User[]> {
76
return this.http.get<User[]>(`${this.entitiesUrl}/search?q=${query}`);
77
}
78
}
79
```