Angular 8 - Как перенести sh данные одной модели в другую модель - PullRequest
1 голос
/ 05 августа 2020

У меня есть страница, на которой у меня есть 3 поля ввода и сетка с кнопкой добавления для добавления данных в сетку и кнопкой сохранения для сохранения всех данных, здесь я хочу попробовать, когда пользователь добавляет некоторые данные в сетка вместо того, чтобы делать запрос API, она должна сохранять данные локально, и когда пользователь нажимает кнопку сохранения, все данные означают данные сетки плюс эти 3 поля ввода данных, которые должны сохраняться в базе данных.

Paraent Модель

export class ParentModel<GridModel> {
  parentId: number;
  totalDue: number;
  totalAmount: number;
  totalDiscount: number;
  childModel: GridModel[];

 constructor(init?: Partial<ParentModel<GridModel>>) {
  Object.assign(this, init);
 }
}

Дочерняя модель

export class GridModel {
  parentId: number;
  childId: number;

  deliveyAmount: number;
  taxAmount: number;

 constructor(init?: Partial<GridModel>) {
  Object.assign(this, init);
 }
}

Моя Служба для обмена данными между моделями

@Injectable({
  providedIn: 'root'
})
export class DataShareService{
  private parentSubject: BehaviorSubject<ParentModel<GridModel[]>> = new BehaviorSubject<ParentModel<GridModel[]>>(null);
  //Just in case if need to subscribe
  paretnt= this.parentSubject.asObservable();

constructor() { }

setGridData(griData: GridModel[]) {
  this.parentSubject.value.childModel = griData;
}

setParentData(parenData: ParentModel<GridModel[]>) {
  this.parentSubject.next(parenData);
}

get parentData(): ParentModel<GridModel[]> {
  return this.parentSubject.value;
 }
}

Файл ts сетки

  saveGridData() {
    this.dataShareService.setGridData(this.gridForm.value);
  }

Родительский файл ts

  saveParentData() {
    this.dataShareService.setParentData(this.parentForm.value);
  }

Но это не работает должным образом, я делает что-то не так или есть лучший способ сделать это

1 Ответ

1 голос
/ 05 августа 2020

Это можно сделать с помощью angular реактивных форм. Google 'Dynami c реактивные формы'. Это встроенная функция в angular. Нажав на кнопку добавления, вы можете добавить группу формы в форму и создать ее перед отправкой

Это также может решить проблему с ошибками проверки, когда вы отправляете много данных за одну отправку. Каждое поле формы покажет свою ошибку. Также встроенная функция angular

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...