File

src/app/@core/dynamic-form/service/form-loader.service.ts

Index

Properties
Methods

Constructor

constructor(httpClient: HttpClient)
Parameters :
Name Type Optional
httpClient HttpClient no

Methods

load
load(form: )

load form from forms directory

Parameters :
Name Optional
form no
Returns : any
loadForms
loadForms(route: )

load forms based on form config

Parameters :
Name Optional
route no
Returns : any
resolve
resolve(route: ActivatedRouteSnapshot)

resolve forms

Parameters :
Name Type Optional
route ActivatedRouteSnapshot no
Returns : any

Properties

Private JSON_DIR
JSON_DIR: string
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);
  }
}

results matching ""

    No results matching ""