src/app/core/ngxs/contact-person.state.ts
State for managing the contact people of the application.
Has: Action handlers to read, write, update and delete a contact person. Static and dynamic selectors to select contact people.
Methods |
constructor(contactPersonService: ContactPersonService)
|
||||||
Defined in src/app/core/ngxs/contact-person.state.ts:26
|
||||||
Parameters :
|
addContactPerson | |||||||
addContactPerson(undefined: StateContext
|
|||||||
Decorators :
@Action(AddContactPerson)
|
|||||||
Defined in src/app/core/ngxs/contact-person.state.ts:47
|
|||||||
Parameters :
Returns :
void
|
Static contactPerson | ||||||
contactPerson(id: number)
|
||||||
Defined in src/app/core/ngxs/contact-person.state.ts:40
|
||||||
Parameters :
Returns :
any
|
Static contactPersons | ||||||
contactPersons(state: ContactPersonStateModel)
|
||||||
Decorators :
@Selector()
|
||||||
Defined in src/app/core/ngxs/contact-person.state.ts:36
|
||||||
Parameters :
Returns :
{}
|
deleteContactPerson | |||||||
deleteContactPerson(undefined: StateContext
|
|||||||
Decorators :
@Action(DeleteContactPerson)
|
|||||||
Defined in src/app/core/ngxs/contact-person.state.ts:80
|
|||||||
Parameters :
Returns :
void
|
ngxsOnInit | |||||
ngxsOnInit(undefined: StateContext
|
|||||
Defined in src/app/core/ngxs/contact-person.state.ts:29
|
|||||
Parameters :
Returns :
void
|
updateContactPerson | |||||||
updateContactPerson(undefined: StateContext
|
|||||||
Decorators :
@Action(UpdateContactPerson)
|
|||||||
Defined in src/app/core/ngxs/contact-person.state.ts:61
|
|||||||
Parameters :
Returns :
void
|
import { State, Selector, Action, StateContext, createSelector, NgxsOnInit } from '@ngxs/store';
import { patch, updateItem, removeItem, append } from '@ngxs/store/operators';
import { Injectable } from '@angular/core';
import { ContactPerson } from '../data/models/contact-person.model';
import {
AddContactPerson,
DeleteContactPerson,
UpdateContactPerson,
} from './actions/contact-person.action';
import { ContactPersonService } from '../http/contact-person.service';
export interface ContactPersonStateModel {
contactPersons: ContactPerson[];
}
/**
* State for managing the contact people of the application.
*
* Has: Action handlers to read, write, update and delete a contact person.
* Static and dynamic selectors to select contact people.
*/
@State<ContactPersonStateModel>({
name: 'contactPerson',
})
@Injectable()
export class ContactPersonState implements NgxsOnInit {
constructor(private contactPersonService: ContactPersonService) {}
ngxsOnInit({ patchState }: StateContext<ContactPersonStateModel>) {
this.contactPersonService.getContactPersons().subscribe(contactPersons => {
patchState({ contactPersons });
});
}
@Selector()
static contactPersons(state: ContactPersonStateModel) {
return state.contactPersons;
}
static contactPerson(id: number) {
return createSelector([ContactPersonState], (state: ContactPersonStateModel) => {
return state.contactPersons.find(x => x.id === id);
});
}
@Action(AddContactPerson)
addContactPerson(
{ setState }: StateContext<ContactPersonStateModel>,
{ contactPerson }: AddContactPerson,
) {
this.contactPersonService.postContactPerson(contactPerson).subscribe(contactPerson => {
setState(
patch({
contactPersons: append<ContactPerson>([contactPerson]),
}),
);
});
}
@Action(UpdateContactPerson)
updateContactPerson(
{ setState }: StateContext<ContactPersonStateModel>,
{ id, contactPerson }: UpdateContactPerson,
) {
this.contactPersonService
.putContactPerson({ ...contactPerson, id })
.subscribe(contactPerson => {
setState(
patch({
contactPersons: updateItem<ContactPerson>(
x => x.id === contactPerson.id,
contactPerson,
),
}),
);
});
}
@Action(DeleteContactPerson)
deleteContactPerson(
{ setState }: StateContext<ContactPersonStateModel>,
{ id }: DeleteContactPerson,
) {
setState(
patch({
contactPersons: removeItem<ContactPerson>(x => x.id === id),
}),
);
}
}