Mark

Mark

  • NA
  • 28
  • 12.6k

Autosave working for entire form, only need to autosave one field

Jun 7 2022 4:37 AM

This might be Angular and not Typescript. I have an Angular form that is saving the entire form instead of one component (Copy Schedule from Site) in the form. Is there a way to do that? My form setup is using formly in typescript and the autosave is set to true in the html.

<div id="siteSchedule" class="linq-py-3">
<h3>Site Schedule</h3>
<mat-divider></mat-divider>
 **<app-form [autosave]="true"** [form]="form" [fields]="fields" [model]="model" 
 [options]="options" 
(submitted)="onSubmit($event)"> </app-form>
</div>

This is just the formly part of the typescript code. If more typescript would help I would provide. I have posted too much code before and have been told it's too much so please let me know if this is not enough. I don't want to post the entire Typescript if I don't have to.

 import {AutosaveService} from '@app/core/services/autosave.service';      

  constructor(
  @Inject(CoreApi.SiteApplicationClient) private readonly siteApplicationClient: 
   CoreApi.ISiteApplicationClient,
  @Inject(SnackbarService) private readonly snackBar: ISnackbarService,
  private readonly autosaveService: AutosaveService,
  private readonly mealServiceDetailsService: MealServiceDetailsService,
  private readonly dialog: MatDialog
  ) {}

copySiteScheduleControl: FormlyFieldConfig | undefined;
 model: SiteScheduleModel = {
 siteScheduleControl: undefined,
 monthsOfOperation: new CoreApi.MonthsOfOperation(),
 daysOfOperation: {days: []},
 hoursOfOperation: {days: []},
 exception: [],
 };
modelLoaded = false;
form = new FormGroup({});
options: FormlyFormOptions = {};
fields: FormlyFieldConfig[] = [
 {
  fieldGroupClassName: 'row',
  fieldGroup: [
    {
      wrappers: ['form-field'],
      className: 'col-6',
      key: 'siteScheduleControl',
      type: 'select',
      templateOptions: {
        label: 'Copy Schedule from Site',
        options: this.approvedSites,
        labelProp: 'text',
      },
      expressionProperties: {
        'templateOptions.disabled': (): boolean => {
          return this.siteSubmissionModel.disableControls;
        },
      },
      hooks: {
        onInit: (field: FormlyFieldConfig | undefined): void => {
          this.copySiteScheduleControl = field;
          if (field?.templateOptions?.options) {
            field.templateOptions.options = this.approvedSites;
          }
        },
      },
    },       
    ];

    return this.siteApplicationClient.upsertSiteSchedule(command).pipe(
    tap((result: CoreApi.SiteSchedule) => {
      this.autosaveService.setSaved();
      this.mealServiceDetailsService.siteSchedulesChange(result);
    })
  );
} else {
  return;
}

I appreciate any assistance on this on how I could possibly get this to autosave for just the Copy Site from Schedule field.