分割字符串会返回未定义的错误

时间:2019-05-10 11:13:34

标签: angular

我已经从API调用返回了任何数据。我相信数据是由分号分隔的字符串。我正在尝试拆分字符串,以便可以通过字符串插值在html中显示子字符串,然后在后续页面中使用每个子字符串。我尝试在组件代码中拆分数据,并继续返回“在未定义时无法识别拆分”。

我已经搜索了Slice之类的替代品,但找不到太多东西。

TS代码:

export class ItemComponent implements OnInit {

  items: any;
  itemsArray: string[];

  constructor(private ailmentService: AilmentService, private activatedRoute: ActivatedRoute) { }

  ngOnInit() {
    this.ailmentService.selectAilment(this.activatedRoute.snapshot.params.problemId).subscribe(data => this.items = data);
    this.itemsArray = (this.items as string).split(';');
  }
}

HTML代码:

<tr *ngFor="let item of itemsArray">
<td>{{item}}</td>

结果是

  

错误TypeError:无法读取未定义的属性“ split”

1 个答案:

答案 0 :(得分:1)

export class ItemComponent implements OnInit {

  items: any;
  itemsArray: string[];

  constructor(private ailmentService: AilmentService, private activatedRoute: ActivatedRoute) { }

  ngOnInit() {
    this.ailmentService.selectAilment(this.activatedRoute.snapshot.params.problemId).subscribe(data => {
            this.items = data[0];
            this.itemsArray = (this.items as string).split(';');
        });
  }
}

实现的问题是您试图将字符串拆分到subscription方法之外。这些是异步调用,在服务器返回数据之前,您的实现称为split。另外,您的数据this.items的返回类型为array,因此您需要遍历此数组并获得结果。假设您的数组中有一个长字符串,那么上面的代码应该可以帮助您!