我已经从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”
答案 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
,因此您需要遍历此数组并获得结果。假设您的数组中有一个长字符串,那么上面的代码应该可以帮助您!