如何设置我的表单来发送对象

时间:2017-12-15 16:03:34

标签: angular forms rest typescript drupal

好的,这就是Drupal想要创建节点的内容。

节点 创建

发布: http://example.com/entity/node 内容类型: application / json

{
  "type":[{"target_id":"article"}],
  "title":[{"value":"Hello World"}],
  "body":[{"value":"How are you?"}]
}

我正在关注英雄之旅,所以这是我发送帖子方法的实际参考资料:

模板中的表单

  <label>Task name:
    <input #taskName type="text" class="form-control" id="name" required>
  </label>
  <button (click)="add(taskName.value); taskName.value=''" class="btn btn-success">
    add
  </button>
</div>

这是我获取表单的方式并将其发送到服务

add(name: string): void {
  name = name.trim();
  if (!name) { return; }
  this.taskService.addTask({ name } as Task)
    .subscribe(Task => {
      this.tasks.push(Task);
    });

这就算了:

  

{&#34;名称&#34;:&#34; ASD&#34;}

所以,在控制台中我得到了这个:

  

422(不可处理的实体)

我可以在表单中询问更多字段并使用post方法发送它们,所以我的问题是:如何设置表单以Drupal想要的方式发送所有字段。< /强>

这是我最好的方法:

新表格

<form (ngSubmit)="TaskData()" #taskForm="ngForm">
  <div class="form-group">
    <label for="name">Name</label>
    <input type="text" class="form-control" id="name" required #taskName>
  </div>
  <div class="form-group">
    <label for="alterEgo">Body</label>
    <input type="text" class="form-control" id="body" #taskBody>
  </div>    
  <button type="submit" class="btn btn-success">Submit</button>
</form>

新的TaskData功能:

TaskData(name: string, body: string): void {
  this.taskService.addTask({ name, body } as Task)
    .subscribe(Task => {
      this.tasks.push(Task);
    });
}

但显然有些不对劲。

1 个答案:

答案 0 :(得分:0)

也许您可以在.ts文件中使用类似的东西构建对象

TaskData(name: string, body: string){
   let data: any = {
      type: [],
      title: [],
      body: []     
   };
   data.type.push({target_id: id});
   data.title.push({value: name});
   data.body.push({value: body});

   this.taskService.addTask(data).subscribe(
      doSomeThing();
   );
}