Angular 4 Design Pattern
A4 is a design pattern for large scale angular 4 applications that is easy to use and implement.
Code Seperation
A4 categorize app basics like (services, directives,etc) to seperate parts. components and directives have seperate modules to import in project.
imports: [
BrowserModule,
FormsModule,
ReactiveFormsModule,
AppRoutingModule,
FrameworkDirectiveModule,
FrameworkComponentModule
]
Components
A4 have a BaseComponent
that provide common services for other components, BaseComponent
have two Generic types, First one is component model and second is component service for CRUD and other database interactions.For dynamic injection BaseComponent
use Injector
and ReflectiveInjector
for resolve and create providers and services.When a component extends BaseComponent
by inheritance component have two property: a model and service.
export class SampleComponent extends BaseComponent<User,UserService> implements OnInit {
constructor(injector : Injector){
super(injector);
}
onSubmit() : void{
this.service.post(this.model);
}
ngOnInit() {
}
}
Services
HtppService
A4 have a HttpService
that use Angular native http provider for database interactions.
JsonpService
A4 have a JsonpService
that use Angular native http provider for database interactions.
BaseDataService
A4 have a BaseDataService
that provide common CRUD actions like: (POST,GET,GETALL,…), BaseDataService
have one Generic type that is the service model.BaseDataService
use HttpService
for CRUD.
for example when an app service extends BaseDataService
then it have all common methods already and could have more specific methods.
@Injectable()
export class UserService extends BaseDataService<User>{
constructor(injector : Injector) {
super(injector);
}
public login(user : User) : Obervable<T> {
return this.http.post(user);
}
}
Validation
:clock130: Comming soon…
This project was generated with Angular CLI version 1.3.2.
Development server
Run ng serve
for a dev server. Navigate to http://localhost:4200/
. The app will automatically reload if you change any of the source files.
Code scaffolding
Run ng generate component component-name
to generate a new component. You can also use ng generate directive|pipe|service|class|guard|interface|enum|module
.
Build
Run ng build
to build the project. The build artifacts will be stored in the dist/
directory. Use the -prod
flag for a production build.
Running unit tests
Run ng test
to execute the unit tests via Karma.
Running end-to-end tests
Run ng e2e
to execute the end-to-end tests via Protractor.
Before running the tests make sure you are serving the app via ng serve
.
Further help
To get more help on the Angular CLI use ng help
or go check out the Angular CLI README.