Typescript将string []转换为字符串

问题描述 投票:0回答:2

我有一个Angular 5应用程序,我有一个候选对象,它有一个string []属性,在它实现的接口中指定。正在从模板中检索属性的实际值,作为输入字符串。这就是问题。需要将对象作为字符串数组保存到数据库中,如下所示:

{ candidate.skills: ["c++", "java", "etc"] }

但是,模板中输入字段的值以字符串形式出现。但是typescript认为它是在对象的接口中指定的字符串[]。所以,我不能将candidate.skills分成一个数组。

有没有办法做到这一点 ?如果是这样,我还没找到它。

angular typescript type-conversion type-assertion
2个回答
0
投票

如果需要,您可以在界面中将类型指定为字符串或数组。

skills: string|string[];

编辑

如评论中所述,您可能必须转换变量以执行仅适用于特定类型的某些操作:

// Convert from string to string[]
this.candidate.skills = (<string>this.candidate.skills).split(', ');

0
投票

我实现的接口:

export class Candidate {
id: number;
name: string;
skills: string|string[]; }

在组件中,我尝试通过服务上传我的数据。 component.ts中的代码:

import { Component, OnInit } from '@angular/core';
import { CandidatesService } from '../candidates.service';
import { Validators } from '@angular/forms';
import { Observable } from 'rxjs/Observable';

import { Candidate } from '../candidate';

@Component({
  selector: 'app-candidates-adding',
  templateUrl: './candidates-adding.component.html',
  styleUrls: ['./candidates-adding.component.css']
})
export class CandidatesAddingComponent implements OnInit {
  candidate: Candidate = new Candidate();

  constructor(private candidatesService: CandidatesService) { }

  ngOnInit() {

  }

  saveCandidate(): void {
    if(this.candidate.skills.indexOf(', ') >= 0) {
      this.candidate.skills = this.candidate.skills.split(', '); 
    }
    this.candidatesService.addCandidate(this.candidate).subscribe();
  }
}

在模板中:

<input [(ngModel)]="candidate.name" placeholder="name" minlength="4">
<input [(ngModel)]="candidate.skills" placeholder="name" minlength="1">
<button (click)="saveCandidate()">Adauga candidat</button>
© www.soinside.com 2019 - 2024. All rights reserved.