Angular2 尝试区分'[object Object]'时出错

Angular2 Error trying to diff '[object Object]'

我想升级我的应用程序,因此 css/bootstrap 中显示的数据将更改为 Prime NG DataTable,我可以在其中过滤和排序数据。首先,我尝试 DataTable 使用虚拟 class + 虚拟数据。它工作正常。但是当我试图将它与我的应用程序集成时,它从 JSON 获取数据,它崩溃并显示 Error trying to diff '[object Object]'

在这里和互联网上检查这个问题没有帮助,因为它只是做了一些推测,比如 Angular 不检查 DataTable 中的数据是否被更改(我什至不确定如果是真的)。​​

在我的应用程序发生变化之前,您必须使用正确的用户名和密码登录才能显示登录帐户背后的数据。现在,当我登录时,它不适用于 Prime NG DataDatble

简化代码:

Vehicle.Service.ts

@Injectable()
export class VehicleService {
    private defUrl = 'someURL';

    constructor(private http: Http) { }
    getVehicle(username?: string, password?: string) {
        const url = (!username || !password) ? this.defUrl : 'someURL' + username + '/' + Md5.hashStr(password);
        return this.http.get(url)
            .map(res => res.json());

    }

Vehicle.component.ts

  public vehicles: GeneralVehicle[];

  constructor(private vehicleService: VehicleService, private router: Router) {
    this.vehicleService.getVehicle().subscribe(vehicle => {
      this.vehicles = vehicle;
      this.vehicles = this.vehicleService.parseUser();
    });
  }

模板:vehicle.html

<div *ngIf="vehicles">
    <p-dataTable [value]="vehicles">
        <p-column field="vehicles.vehicle_id" header="ID"></p-column>
        <p-column field="vehicles.dallassettings" header="Name"></p-column>
    </p-dataTable>
</div>

来自url的示例JSON(状态出现一次,所有"interesting"数据都在dallases数组中)。

{
    "status": 0,
    "dallases": [{
        "vehicle_id": 17954,
        "dallassettings": "3",
        "dallasupdated": "False",
        "dallas_list": [{
            "number": 666111222,
            "auth": 3
        }, {
            "number": 666777888,
            "auth": 4
        }, {
            "number": 123454321,
            "auth": 4
        }]
    }
}

您需要将 html 作为

传递
<div *ngIf="vehicles.dallases">
    <p-dataTable [value]="vehicles.dallases">
        <p-column field="vehicles.dallases.vehicle_id" header="ID"></p-column>
        <p-column field="vehicles.dallases.dallassettings" header="Name"></p-column>
    </p-dataTable>
</div>