错误类型错误:无法读取属性'长度'未定义的角度4(NOT DUPLICATE)

时间:2017-08-18 17:27:19

标签: angular

我收到以下错误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,我收到错误。

2 个答案:

答案 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>
相关问题