【问题标题】:Reactive Forms - Appending Values in Angular反应式表单 - 在 Angular 中附加值
【发布时间】:2019-12-30 23:18:21
【问题描述】:

我正在使用响应式表单,我可以从中附加一些值,以便发送http 请求发帖。它在我附加文本或文件时有效,但我不确定如何附加日期、布尔值或数组。

addPost(postAdded: Post, image: File) {
    const postData = new FormData();
    postData.append("title", postAdded.title); // string
    postAdded.append("startDate", postAdded.startDate); // date
    postAdded.append("private", postAdded.private); // boolean
    postAdded.append("image", image, postAdded.title); // file
    this.http
      .post<{ postId: string }>(
        "http://localhost:3000/api/posts",
        postAdded
      )
      .subscribe(responseData => {
        this.potsUpdated.next([...this.posts]);
        this.router.navigate(["/"]);
      });
  }

我得到的错误如下:

“日期”类型的参数不能分配给“字符串”类型的参数 |斑点'。 “日期”类型不可分配给“字符串”类型。ts(2345)

“布尔”类型的参数不能分配给“字符串”类型的参数 | Blob'.ts(2345)

最后是数组的错误

“string[]”类型的参数不能分配给“string |”类型的参数斑点'。 类型 'string[]' 不可分配给类型 'string'.ts(2345)

当使用布尔值时

布尔值用于切换,日期用于日期选择器。

我该怎么做?

【问题讨论】:

  • 您声明了postData,但您附加到了betData。这是在哪里声明的?
  • 对不起,这只是一个错字

标签: angular typescript reactive-forms


【解决方案1】:

我认为应该以正确的格式添加日期。试试这个:

var datestr = (new Date(postAdded.startDate)).toUTCString();
formdata.append("start", datestr);

对于布尔项:

formdata.append(prop, JSON.stringify(postAdded.private));

对于数组:

for (let i = 0; i < postAdded.participants.length; i ++) {
    formdata.append(prop, JSON.stringify(postAdded.participants[i]));
}

【讨论】:

  • 对不起,我不得不再次将解决方案标记为不正确的解决方案,因为虽然它确实有效,但使用 stringify 我将信息存储为字符串,因此在数据库中显示为“参与者”: ["[\"MARIO\",\"MARIO\",\"MARIO\"]"] 表示它不再将值存储为具有多个元素的数组,而仅存储为具有一个长字符串的数组跨度>
猜你喜欢
  • 1970-01-01
  • 2021-01-12
  • 1970-01-01
  • 2020-04-25
  • 2020-05-05
  • 2019-05-04
  • 2020-09-21
相关资源
最近更新 更多