Сервер Angular 7 / json: пост-запрос принимает только идентификатор - PullRequest
0 голосов
/ 27 мая 2019

Я работаю с Angular 7 и json-сервером;на данный момент я могу успешно работать с методами get и delete, но метод post только публикует id и игнорирует 3 других свойства того же класса

Home HTML

 <form (ngSubmit)="addUser()" class="col-md-6 offset-md-3">
      <div class="row">
        <div class="col-md-6 offset-md-3">
          <input required class="form-control top-dist" placeholder="name" type="text" [(ngModel)]="hero.name" name="name" />
        </div>

        <div class="col-md-6 offset-md-3">
          <input required type="number" class="form-control top-dist"  placeholder="age" name="age" [(ngModel)]="hero.age"/>
        </div>

        <div class="col-md-6 offset-md-3">
          <input required name="email" class="form-control top-dist" type="email"  placeholder="email" [(ngModel)]="hero.email" />
        </div>

        <div class="col-md-6 offset-md-3 text-center">
          <div >
            <input type="submit" value="submit" class="btn btn-danger top-dist " />
          </div>
        </div>
      </div>
    </form>

HomeTS:

export class HomeComponent implements OnInit {
  heroes: Hero[];
  hero: Hero = {
    id: null,
    name: null,
    age: null,
    email:null
  };
  constructor(private dataService: DataService) {

  }

  ngOnInit() {
    this.getHeroes();
  }

  getHeroes() {
    this.dataService.getHeroes().subscribe(data => {
      this.heroes = data;
      console.log(data)
    })
  }
  addUser(){
    if(this.hero.name!=null && this.hero.age!=null && this.hero.email!=null){
    this.dataService.addUser(this.hero).subscribe((data: Hero)=>{console.log(data)})
    }  
  };
}

Сервис:

addUser(user: Hero){
  console.log(user) ---> logs all fields
  if(user.id===null){
    return this.http.post<Hero>(this.url, user,  {
      headers: new HttpHeaders ({
        'Content-Type':'aplication/json'
      })

    })
}    
}

В сервисе я вижу, что все поля пользователя регистрируются в консоли, но возвращаются на домашний компонент, регистрируя наблюдаемую наблюдаемую,Я могу видеть только идентификатор, поэтому только идентификатор отображается после.Может кто-нибудь помочь?

Это журнал дома.Первые четыре были записаны в файл, остальные с почтовым запросом:

enter image description here

1 Ответ

0 голосов
/ 27 мая 2019

Я предполагаю, что конечная точка API настроена так, чтобы возвращать Id только для запросов POST, что является распространенным шаблоном. Чтобы обойти перезапись других свойств объекта, вы можете попробовать одну вещь:

this.dataService.addUser(this.hero).subscribe(
    (data: id) => this.hero = Object.assign({}, this.hero, { id: id })
)
...