我收到以下错误LeaderBoardComponent.html:27 ERROR TypeError: Cannot read property 'length' of undefined
错误在HTML中:
<div *ngIf="leaderBoardTableData.length > 0">
在我拥有的组件中:
export class LeaderBoardComponent implements OnInit {
leaderBoardTableData: Array<LeaderBoardModel>;
constructor(private leaderBoardService: LeaderBoardService) { }
ngOnInit() {
this.subscribeLeaderBoardDataFromStore();
}
subscribeLeaderBoardDataFromStore() {
this.leaderBoardService.getLeaderBoard()
.skipWhile((data) => { return _.isEmpty(data) })
.subscribe((data) => {
if (!_.isEmpty(data)) {
this.leaderBoardTableData = [data];
}
});
}
和服务:
getLeaderBoard(): Observable<LeaderBoardModel> {
return this.httpUtil.get(this.appConstants.END_POINT_LEADERBOARD)
.map(response => <LeaderBoardModel>response.json());
}
当我尝试执行以下操作时:
hello 1 <div *ngIf="leaderBoardTableData.length > 0"> hello 2
只打印hello 1
,我收到错误。
答案 0 :(得分:2)
如果未定义leaderBoardTableData
,则会发生此错误。解决问题的最简单方法是:
<div *ngIf="leaderBoardTableData?.length > 0">
注意:您可以在html模板中使用?.
运算符,但不能在代码本身中使用。
答案 1 :(得分:0)
这是因为变量没有价值来解决它:
Opcion 1 你可以在构造函数中实现它:
constructor(){
leaderBoardTableData = [];
}
Opcion 2 您可以添加带有if条件的div
<div *ngIf="leaderBoardTableData">
<div *ngIf="leaderBoardTableData.length > 0">
...
</div>
</div>