Typescript отправляет данные на сервер

У меня проблема с отправкой данных на мой сервер. Я много чего пробовал, но понятия не имею. Хорошо, сначала это мой класс:

import {Father} from './Father';
import {Child} from './Child';

export class Family {
  public id: number;
  public father: Father
  public childList: Array<Child>
}

Я хочу отправить семейство объектов на свой сервер. У этого класса должен быть список отцов и потомков объекта. Реализовал для него семейный сервис:

export class FamilyService {

  private baseUrl = 'http://localhost:8080/api';

  constructor(private http: HttpClient) { }

  createFamily(family: Family): Observable<Object> {
    return this.http.post(`${this.baseUrl}` + `/addFamily`, family);
}

А это моя составляющая:

@Component({
  selector: 'app-create-child',
  templateUrl: './create-child.component.html',
  styleUrls: ['./create-child.component.css']
})
export class CreateChildComponent implements OnInit {

  @Input('father') father: Father = new Father();
  family: Family = new Family();s
  child: Child = new Child();
  submitted = false;
  childList: Array<Child> = [];

  createFamily() {
    this.family.father = new Father();
    this.family.father = this.father;
    this.father.family = this.family;
    this.family.childList = new Array<Child>();
    this.family.childList = this.childList;
    this.familyService.createFamily(this.family).subscribe(data => console.log(data), error => console.log(error));
    this.family = new Family();
  }

И когда я запускаю этот код, я всегда получаю ошибку:

TypeError: JSON.stringify cannot serialize cyclic structures.

Это мой первый шаг в Angular, так что, пожалуйста, помогите мне.

(Примечание: в некоторых семьях несколько отцов и / или несколько матерей.)

T.J. Crowder 10.09.2018 11:01
1
1
340
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Сообщение об ошибке сообщает вам, что именно не так: у вас циклическая структура (объект A относится к объекту B, который ссылается на объект A [возможно, косвенно]).

Мы видим это из этого:

this.family.father = this.father;
this.father.family = this.family;

Итак, family относится к father, который относится к family.

Вам нужно будет создать нециклическую структуру, чтобы превратить ее в JSON, поскольку JSON не поддерживает циклические структуры. (Вы можете использовать только нециклический при сериализации.)

Большое спасибо @ T.J. Crowder за вашу помощь. Работает отлично.

luksen1991 10.09.2018 12:02

Другие вопросы по теме