Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
@yoozly/ngrx-form
Advanced tools
A lib for Angular that binds reactive-forms and @ngrx/store together. Every change in a form is reflected in the store and vice versa. The store object for each form is automatically generated by the library.
The lib is designed to work in a feature modules, but it can be implemented in the root module as well. A feature module can handle multiple forms.
Npm : npm i @yoozly/ngrx-form -s
Yarn : yarn add @yoozly/ngrx-form
In the root module of your application, add ngrxForm
in the array of metareducers
import { ngrxForm } from '@yoozly/ngrx-form';
@NgModule({
StoreModule.forRoot(reducers, {
metaReducers: [ngrxForm]
})
})
export class RootModule {}
First, we need to import the following dependendies in the feature module :
NgrxFormModule
NgrxFormReducer
, a utility that creates the reducers for usFEATURE_REDUCER_TOKEN
to inject the feature nameimport {
NgrxFormModule,
NgrxFormReducer,
FEATURE_REDUCER_TOKEN
} from '@yoozly/ngrx-form';
Then, use the same feature name (StoreModule
and NgrwFormModule
) and use the FEATURE_REDUCER_TOKEN
injection token.
@NgModule({
imports: [
...
StoreModule.forFeature('someFeatureName', FEATURE_REDUCER_TOKEN),
NgrxFormModule.forFeature('someFeatureName')
...
]
})
Finally, use the providers array to configure the reducers that will be created. You need to pass an array of names to the NgrxFormReducer
factory function.
@NgModule({
...
providers: [
{
provide: FEATURE_REDUCER_TOKEN,
useFactory: function(): ActionReducerMap<any> {
return {
...reducers,
...NgrxFormReducer(['formNameA','formNameB','formNameC'])
};
}
}
]
})
Here is the full configuration :
import {
NgrxFormModule,
NgrxFormReducer,
FEATURE_REDUCER_TOKEN
} from '@yoozly/ngrx-form';
@NgModule({
StoreModule.forFeature('someFeatureName', FEATURE_REDUCER_TOKEN),
NgrxFormModule.forFeature('someFeatureName')
providers: [
{
provide: FEATURE_REDUCER_TOKEN,
useFactory: function(): ActionReducerMap<any> {
return {
...reducers,
...NgrxFormReducer(['formNameA','formNameB','formNameC'])
};
}
}
]
})
Use the NgrxFormConnect
directive to bind your form group to the store.
<form [formGroup]="myFormGroup" NgrxFormConnect="formNameA">...</form>
The form name must be the same that the one provided in NgrxFormReducer
array.
return {
...reducers,
...NgrxFormReducer(['formNameA', 'formNameB'])
};
<form [formGroup]="myFormGroupA" NgrxFormConnect="formNameA">...</form>
<form [formGroup]="myFormGroupA" NgrxFormConnect="formNameB">...</form>
NgrxFormState<T>
: the interface for each generated form. An optional type can be passed with the form content (ie form fields).
export interface NgrxFormState<T> {
value: T;
errors?: { [fieldName: string]: string };
pristine?: Boolean;
valid?: Boolean;
}
UpdateFormPayload
: the interface for the UpdateForm action payload.
export interface UpdateFormPayload<T> {
feature: string;
path: string;
form: NgrxFormState<T>;
}
Important : Version 0.1.1 is now compatible with ngrx v8.x and a new action is available :
We recommend to use the new syntax but both are still perfectly valid.
updateform
: [v8.x] the action used to update the store.
The payload must contains :
this.store.dispatch(
updateform({
payload:
{
feature: 'theFeatureName',
path: 'theFormName',
form: {
value: { /* the form datas */},
errors: {},
pristine: false,
valid: false
}
})
)
Updateform
: the action used to update the store.
The payload must contains :
this.store.dispatch(
new Updateform({
feature: 'theFeatureName',
path: 'theFormName',
form: {
value: { /* the form datas */},
errors: {},
pristine: false,
valid: false
})
)
FAQs
Angular Lib that binds reactive-forms and @ngrx/store together.
We found that @yoozly/ngrx-form demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers 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.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.