【问题标题】:How to set up my form to send an object如何设置我的表单以发送对象
【发布时间】:2017-12-15 16:03:34
【问题描述】:

好的,这就是 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);
    });

这让我觉得:

{"name":"asd"}

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

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);
    });
}

但显然有些地方出了问题。

【问题讨论】:

    标签: angular forms rest typescript drupal


    【解决方案1】:

    也许你可以在你的 .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();
       );
    }
    

    【讨论】:

    • 谢谢,我做了你所做的,onSubmit (name: string, body: string) { let task : any = { type: [ ],标题:[],正文:[] }; task.type.push ({target_id: "task"}); task.title.push ({value: name}); task.body.push ({value: body}); console.log (JSON.stringify(task)); } 这是控制台日志的结果: {"type":[{"target_id":"task"}],"title":[{}],"body":[{} ]}。 我的标题和正文是空的
    • 在表单中我必须添加这个:
      onSubmit (taskName.value, taskBody.value)" #heroForm="ngForm">
    猜你喜欢
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-18
    • 2010-09-16
    • 2017-10-08
    • 2018-01-07
    • 1970-01-01
    相关资源
    最近更新 更多