src/app/@core/dynamic-form/service/form-loader.service.ts
Properties |
|
Methods |
constructor(httpClient: HttpClient)
|
||||||
Parameters :
|
load | ||||
load(form: )
|
||||
load form from forms directory
Parameters :
Returns :
any
|
loadForms | ||||
loadForms(route: )
|
||||
load forms based on form config
Parameters :
Returns :
any
|
resolve | ||||||
resolve(route: ActivatedRouteSnapshot)
|
||||||
resolve forms
Parameters :
Returns :
any
|
Private JSON_DIR |
JSON_DIR:
|
Type : string
|
Default value : '/assets/data/forms/'
|
import {Injectable} from "@angular/core";
import {ActivatedRouteSnapshot, Resolve} from "@angular/router";
import {Observable} from "rxjs/Rx";
import {HttpClient} from "@angular/common/http";
@Injectable()
export class FormLoaderService implements Resolve<Observable<any>> {
private JSON_DIR = '/assets/data/forms/';
constructor(private httpClient: HttpClient) {
}
/**
* load form from forms directory
* @param form
* @returns {Observable<Object>}
*/
load(form) {
return this.httpClient.get(`${this.JSON_DIR}${form.path}.form.schema.json`);
}
/**
* load forms based on form config
* @param route
* @returns {any}
*/
loadForms(route): any {
return Object.keys(route.data.forms).forEach((formKey) => {
route.data.forms[formKey].schema = this.load(route.data.forms[formKey]);
// .subscribe(res => {
// });
});
}
/**
* resolve forms
* @param {ActivatedRouteSnapshot} route
* @returns {any}
*/
resolve(route: ActivatedRouteSnapshot) {
// @FIXME use logic of menu loader
return this.loadForms(route);
}
}