【问题标题】:ERROR TypeError: Cannot convert undefined or null to object ejs-treegrid错误类型错误:无法将 undefined 或 null 转换为对象 ejs-treegrid
【发布时间】:2020-03-28 06:02:08
【问题描述】:

在 Angular 应用程序中,我无法读取使用 [dataSource] 创建的服务。

错误类型错误:无法将未定义或空值转换为对象 错误类型错误:无法读取未定义的属性“getService”

component.ts

import { Component, OnInit } from '@angular/core';
import { RailroadAgreementService } from '../../services/railroad-agreement.service';
import { RRA_ID } from '../../models/RRA_ID';

@Component({
  selector: 'app-railroad-agreements',
  templateUrl: './railroad-agreements.component.html',
  styleUrls: ['./railroad-agreements.component.css'],
})

export class RailroadAgreementsComponent implements OnInit {

  public data: RRA_ID[];

  constructor(private railroadAgreementService: RailroadAgreementService) {}

  ngOnInit(): void {
    this.railroadAgreementService.getRRAId().subscribe((data) => {
      this.data = data;
      console.log(this.data);
    })

  }

}

component.html

<ejs-treegrid [dataSource]="data">

</ejs-treegrid>

【问题讨论】:

  • 发布您的 RailroadAgreementService 和 ejs-treegrid ts 代码
  • 尝试将data 数组初始化为一个空数组,看看是否能消除错误。像这样:public data: RRA_ID[] = [];

标签: angular typescript


【解决方案1】:

如果服务方法返回一个“冷”可观察对象,它的值最初将是null,并且您的组件抱怨它无法访问它所期望的属性,因为它收到了null 而不是一个对象、数组等

这是因为 Observable 代码是异步运行的。

为了解决这个问题,您可以强制组件等到data 属性为真(非空、未定义、假为空字符串等)才能呈现:

<ejs-treegrid *ngIf="data" [dataSource]="data"></ejs-treegrid>

【讨论】:

    猜你喜欢
    • 2020-08-15
    • 1970-01-01
    • 2018-11-21
    • 2021-09-01
    • 2021-07-29
    • 2020-07-19
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多