
Product
Rust Support Now in Beta
Socket's Rust support is moving to Beta: all users can scan Cargo projects and generate SBOMs, including Cargo.toml-only crates, with Rust-aware supply chain checks.
@js-smart/ng-store
Advanced tools
A simple store built with Angular signals. The state information can be stored in Store
and entities can be stored in EntityStore
.
The Store
and EntityStore
are built with Angular signals
Install the library
npm install @js-smart/ng-store
To use the Store, create store service and provide correct type. This brings update
method from Store and data can be updated using this method
login-store.service.ts
import { Store } from '@js-smart/ng-store';
import { Injectable } from '@angular/core';
export interface LoginState {
isLoggedIn: boolean;
userName: string;
}
@Injectable({
providedIn: 'root',
})
export class LoginStore extends Store<LoginState> {
constructor() {
super();
}
}
login.component.ts
And inject the store in the component and use update
method to update the state and data
property to get the state
import { LoginStore } from './login-store.service';
import { Component, inject } from '@angular/core';
@Component({
selector: 'app-login',
templateUrl: './login.component.html',
})
export class LoginComponent {
loginStore = inject(LoginStore);
loginState = this.loginStore.data;
login() {
this.loginStore.update({ isLoggedIn: true, userName: 'John Doe' });
}
logout() {
this.loginStore.update({ isLoggedIn: false, userName: '' });
}
}
To use the Entity Store, create store service and provide correct type. This brings findById
, set
, upsert
,upsertMulti
and remove
methods from Entity Store and data can be updated using these methods
employee-store.service.ts
import { Store } from '@js-smart/ng-store';
import { Injectable } from '@angular/core';
export interface Employee {
id: number;
firstName: string;
lastName: string;
email: string;
phone: string;
age: number;
}
@Injectable({
providedIn: 'root',
})
export class EmployeeStore extends EntityStore<Employee> {
constructor() {
super();
}
}
employee.component.ts
And inject the store in the component and use set
method to update the state and data
property to get the state
import { LoginStore } from './login-store.service';
import { Component, inject,OnInit } from '@angular/core';
@Component({
selector: 'app-login',
templateUrl: './login.component.html',
})
export class LoginComponent implements OnInit {
employeeService = inject(EmployeeService);
employeeStore = inject(EmployeeStore);
ngOnInit(): void {
this.employeeService.getEmployees().subscribe((employees) => {
this.employeeStore.set(employees);
});
}
}
npm run start
to start the demo projecthttp://localhost:4300
in your browserRun ng test
to execute the unit tests
FAQs
Angular Signal Store
We found that @js-smart/ng-store demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket's Rust support is moving to Beta: all users can scan Cargo projects and generate SBOMs, including Cargo.toml-only crates, with Rust-aware supply chain checks.
Product
Socket Fix 2.0 brings targeted CVE remediation, smarter upgrade planning, and broader ecosystem support to help developers get to zero alerts.
Security News
Socket CEO Feross Aboukhadijeh joins Risky Business Weekly to unpack recent npm phishing attacks, their limited impact, and the risks if attackers get smarter.