在打字稿中使用数组

时间:2019-03-25 20:44:22

标签: angular

我在公式编辑器中有一个复选框,我想将数据存储在具有更多ID的数据库中。因此,我认为最好的方法是使用Array类型,以便以后在处理输入的ID时使用。 但是在Angular中,matchs.service.ts中有addMatch函数,并且出现错误:

Argument of type 'Player[]' is not assignable to parameter of type 'string | Blob'.
  Type 'Player[]' is not assignable to type 'string'.

这是功能,我有问题,播放器是模型:

  addMatch(dateOfMatch: Date,
    playersPlayed: Array<Player>) {
    const matchData = new FormData();
    matchData.append("dateOfMatch", dateOfMatch.toString());
    matchData.append("playersPlayed", playersPlayed);

    this.http
      .post<{ message: string; match: Match }>(
        "http://localhost:3000/api/matchs",
        matchData
      )
      .subscribe(responseData => {
        this.router.navigate(["/"]);
      });
  }

在我的HTML中,我从用户那里获取数据的位置在这里:

<mat-form-field>
    <mat-select formControlName="playersPlayed" placeholder="Players" multiple>
      <mat-option *ngFor="let player of players" [value]="player.id">{{player.name}} {{player.surename}} ({{player.teamName}})</mat-option>
    </mat-select>
   <mat-error *ngIf="form.get('playersPlayed').invalid">Please enter a players who played.</mat-error>
</mat-form-field>

我做错了什么?谢谢。

1 个答案:

答案 0 :(得分:1)

来自FormData文档,有关附加函数的value参数:

  

这可以是USVString或Blob(包括File之类的子类)。

来源:FormData.append()

所以我认为在您的情况下,字符串选项将是正确的。我会尝试对Player数组进行字符串化,我想这可能有效:

matchData.append("playersPlayed", JSON.stringify(playersPlayed));