gpt4 book ai didi

angular - PrimeNG 树表为空

转载 作者:太空狗 更新时间:2023-10-29 17:59:07 30 4
gpt4 key购买 nike

在尝试在 Angular 4.1 项目中使用 PrimeNG 时,我遇到了一些问题。

这是我关注的文档:https://www.primefaces.org/primeng/#/treetable

我正在测试 TreeTable 功能,但 UI 中的输出为空。它显示没有内容且具有 class="undefined"的单元格。

Empty Table

应用程序组件.html:

<p-treeTable *ngIf="treeNode" [value]="treeNode">
<p-column field="id" header="ID"></p-column>
<p-column field="label" header="Label"></p-column>
</p-treeTable>

应用程序模块.ts:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { HttpModule } from '@angular/http';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';

import { TreeTableModule, SharedModule } from 'primeng/primeng';

import { AppComponent } from './app.component';
import { CustomerTypeService } from '../app-configure/service/app.customer.type.service';

@NgModule({
declarations: [
AppComponent
],
imports: [
CommonModule,
BrowserModule,
HttpModule,
BrowserAnimationsModule,
TreeTableModule,
SharedModule
],
providers: [CustomerTypeService],
bootstrap: [AppComponent]
})
export class AppModule { }

应用程序组件.ts:

import { Component, OnInit } from '@angular/core';
import { TreeNode } from 'primeng/primeng';

import { CustomerTypeService } from '../app-configure/service/app.customer.type.service';

@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
providers: []
})
export class AppComponent implements OnInit {
treeNode: TreeNode[];

constructor(private customerTypesService: CustomerTypeService) {}

ngOnInit(): void {
this.customerTypesService.getCustomerTypes()
.then(treeNode => {
this.treeNode = treeNode;
console.log(this.treeNode);
});
}
}

这是我从 HTTP 请求返回的 JSON 字符串:[{"id":1,"label":"Account","parentId":null,"parentLabel":null} ,{"id":2,"label":"银行账户","parentId":1,"parentLabel":"账户"},{"id":3,"label":"测试","parentId":null,"parentLabel":null}]

app.customertype.service.ts:

import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/toPromise';

import {DefaultConfiguration} from '../../app/app.defaults';
import {CustomerType} from '../model/customer.type';
import {TreeNode} from 'primeng/primeng';

@Injectable()
export class CustomerTypeService {
constructor(private http: Http) {}

/**
* Returns an array of all Customer Types.
* @returns {Promise<CustomerType[]>}
*/
getCustomerTypes(): Promise<TreeNode[]> {
return this.http
.get(`${DefaultConfiguration.BASE_API_URL}/CustomerTypes/`, DefaultConfiguration.getHeaders())
.toPromise()
.then(response => <TreeNode[]> response.json())
.catch(DefaultConfiguration.handleError);
}
}

最佳答案

中添加*ngIf="treeNode"
<p-treeTable [value]="treeNode" *ngIf="treeNode">...</p-treeTable>

对象TreeNode实现了这个接口(interface)

export interface TreeNode {
label?: string;
data?: any;
icon?: any;
expandedIcon?: any;
collapsedIcon?: any;
children?: TreeNode[];
leaf?: boolean;
expanded?: boolean;
type?: string;
parent?: TreeNode;
partialSelected?: boolean;
styleClass?: string;
draggable?: boolean;
droppable?: boolean;
selectable?: boolean;
}

您的 Web 服务正在返回一个未实现接口(interface) TreeNode 的元素数组,它没有属性 id。

这个数组

[{"id":1,"label":"Account","parentId":null,"parentLabel":null},{"id":2,"label":"Bank Account","parentId":1,"parentLabel":"Account"},{"id":3,"label":"Test","parentId":null,"parentLabel":null}]

不是 TreeNode[]

关于angular - PrimeNG 树表为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44722968/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com