Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用Creative form将表单数据发送到angular 6中的api终结点_Angular_Angular6_Angular Forms - Fatal编程技术网

无法使用Creative form将表单数据发送到angular 6中的api终结点

无法使用Creative form将表单数据发送到angular 6中的api终结点,angular,angular6,angular-forms,Angular,Angular6,Angular Forms,我正在学习Angular 6,并在Django中创建了RESTAPI 我必须以JSON格式向服务器发送表单数据 data = JSON.parse(data); // append contact_id data.contact_id = this.contact_id; data = JSON.stringify(data); 这就是我在组件中所做的 my.component.ts import { Component, OnInit } from '@angular/core'; imp

我正在学习Angular 6,并在Django中创建了RESTAPI

我必须以JSON格式向服务器发送表单数据

data = JSON.parse(data);

// append contact_id
data.contact_id = this.contact_id;
data = JSON.stringify(data);
这就是我在组件中所做的

my.component.ts

import { Component, OnInit } from '@angular/core';
import {FormBuilder, FormControl, FormGroup, Validators} from '@angular/forms';
import {AmountGivenService} from '../amount-given.service';
import {ActivatedRoute} from '@angular/router';

@Component({
  selector: 'app-amount-given-add',
  templateUrl: './amount-given-add.component.html',
  styleUrls: ['./amount-given-add.component.css']
})
export class AmountGivenAddComponent implements OnInit {

  addMoneyForm: FormGroup;
  submitted = false;
  contact_id: string;

  constructor(
    private formBuilder: FormBuilder,
    private amountGivenService: AmountGivenService,
    private route: ActivatedRoute
  ) { }

  ngOnInit(): void {

    this.route.params.subscribe(
      param => {
        this.contact_id = param['contact_id'];
      }
    );

    console.log(this.contact_id);

    this.addMoneyForm = this.formBuilder.group({
      amount: new FormControl('', [
        Validators.required
      ]),
      duration: new FormControl()
    });
  }

  get f() {
    return this.addMoneyForm.controls;
  }

  onSubmit() {
    this.submitted = true;

    // stop here if form is invalid
    if (this.addMoneyForm.invalid) {
      console.log('invalid');
      return;
    }

    console.log(this.addMoneyForm.getRawValue());

    let data = this.addMoneyForm.value;
    data = JSON.parse(data);

    // append contact_id
    data.contact_id = this.contact_id;
    data = JSON.stringify(data);

    this.amountGivenService.add(data).subscribe(res => {
      console.log('req completed', res);
    });
  }

}
在发送请求之前,我需要附加
联系人id

但是在提交表单时,页面将刷新表单,表单将作为GET方法提交

从上面的组件文件中删除此代码元素正在工作,并且正在将请求发送到服务器

data = JSON.parse(data);

// append contact_id
data.contact_id = this.contact_id;
data = JSON.stringify(data);
如何将值附加到组件中的表单数据?

编辑2:my.component.html


数量
金额是必需的
持续时间(天)
拯救
这毫无意义:

  • 表单的值不是JSON字符串。它是一个物体。解析对象毫无意义
  • 您的
    amountGivenService
    不应该(显然也不应该)将JSON字符串作为参数。它应该(而且显然)接受一个类型化对象
你应该拥有的只是

const data = this.addMoneyForm.value;
data.contact_id = this.contact_id;

this.amountGivenService.add(data).subscribe(res => {
  console.log('req completed', res);
});

此外,在模板中,“提交”按钮位于表单外部。它必须在里面。

你能发布你表格的HTML吗?用HTML更新问题
const data = this.addMoneyForm.value;
data.contact_id = this.contact_id;

this.amountGivenService.add(data).subscribe(res => {
  console.log('req completed', res);
});