我正在使用angular开发aspnetzero应用程序,但是当我在p-dataTable中分配categories属性值时,我在浏览器控制台中收到此错误:
无法绑定到'value',因为它不是'p-dataTable'的已知属性
我有三个文件。第一个文件categories.component.ts
import { Component, Injector, OnInit } from '@angular/core';
import { AppComponentBase } from '@shared/common/app-component-base';
import { appModuleAnimation } from '@shared/animations/routerTransition';
import { Http, Response, Headers, RequestOptions } from "@angular/http";
import { AppSessionService } from '@shared/common/session/app-session.service';
import { Category } from './category';
import { DataTableModule, SharedModule, DataTable } from 'primeng/primeng';
@Component({
templateUrl: './categories.component.html',
animations: [appModuleAnimation()]
})
export class CategoriesComponent extends AppComponentBase implements OnInit {
categories: Category[];
constructor(
injector: Injector,
private http: Http,
private appSessionService: AppSessionService
) {
super(injector);
}
ngOnInit(): void {
this.getCategories();
}
getCategories(): void {
let headers = new Headers({ 'Content-Type': 'application/json' })
headers.append('tenantId', this.appSessionService.tenant ? this.appSessionService.tenant.id.toString() : '-1');
let options = new RequestOptions({ headers: headers });
this.http.get('/api/categories', options).subscribe(values => {
this.categories = values.json();
});
}
}
第二个categories.component.html
<div [@routerTransition]>
<div class="row margin-bottom-5">
<div class="col-xs-12">
<div class="page-head">
<div class="page-title">
<h1>
<span>{{l("Categories")}}</span>
</h1>
</div>
</div>
</div>
</div>
<div class="portlet light margin-bottom-0">
<div class="portlet-body">
<p-dataTable [value]="categories">
<p-column field="category.Name" header="Category"></p- column>
</p-dataTable>
</div>
</div>
</div>
和类别
export class Category {
constructor(
public id: number,
public name: string) { }
}
这是app.module.ts
import { NgModule } from '@angular/core';
import * as ngCommon from '@angular/common';
import { FormsModule } from '@angular/forms';
import { HttpModule, JsonpModule } from '@angular/http';
import { ModalModule, TooltipModule, TabsModule } from 'ngx-bootstrap';
import { FileUploadModule } from '@node_modules/ng2-file-upload';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { HeaderComponent } from './shared/layout/header.component';
import { HeaderNotificationsComponent } from './shared/layout/notifications/header-notifications.component';
import { SideBarComponent } from './shared/layout/side-bar.component';
import { FooterComponent } from './shared/layout/footer.component';
import { LoginAttemptsModalComponent } from '@app/shared/layout/login-attempts-modal.component';
import { ChangePasswordModalComponent } from '@app/shared/layout/profile/change-password-modal.component';
import { ChangeProfilePictureModalComponent } from '@app/shared/layout/profile/change-profile-picture-modal.component';
import { MySettingsModalComponent } from '@app/shared/layout/profile/my-settings-modal.component';
import { SmsVerificationModalComponent } from '@app/shared/layout/profile/sms-verification-modal.component';
import { AbpModule } from '@abp/abp.module';
import { UtilsModule } from '@shared/utils/utils.module';
import { AppCommonModule } from './shared/common/app-common.module';
import { ServiceProxyModule } from '@shared/service-proxies/service-proxy.module';
import { ImpersonationService } from './admin/users/impersonation.service';
import { LinkedAccountService } from './shared/layout/linked-account.service';
import { LinkedAccountsModalComponent } from '@app/shared/layout/linked-accounts-modal.component';
import { LinkAccountModalComponent } from '@app/shared/layout/link-account-modal.component';
import { NotificationsComponent } from './shared/layout/notifications/notifications.component';
import { NotificationSettingsModalCompoent } from './shared/layout/notifications/notification-settings-modal.component';
import { UserNotificationHelper } from './shared/layout/notifications/UserNotificationHelper';
import { ChatBarComponent } from './shared/layout/chat/chat-bar.component';
import { ChatFriendListItem } from './shared/layout/chat/chat-friend-list-item.component';
import { ChatSignalrService } from '@app/shared/layout/chat/chat-signalr.service';
import { QuickSideBarChat } from '@app/shared/layout/chat/QuickSideBarChat';
import { DataTableModule } from 'primeng/primeng';
import { PaginatorModule } from 'primeng/primeng';
@NgModule({
declarations: [
AppComponent,
HeaderComponent,
HeaderNotificationsComponent,
SideBarComponent,
FooterComponent,
LoginAttemptsModalComponent,
LinkedAccountsModalComponent,
LinkAccountModalComponent,
ChangePasswordModalComponent,
ChangeProfilePictureModalComponent,
MySettingsModalComponent,
SmsVerificationModalComponent,
NotificationsComponent,
ChatBarComponent,
ChatFriendListItem,
NotificationSettingsModalCompoent
],
imports: [
ngCommon.CommonModule,
FormsModule,
HttpModule,
JsonpModule,
ModalModule.forRoot(),
TooltipModule.forRoot(),
TabsModule.forRoot(),
FileUploadModule,
AbpModule,
AppRoutingModule,
UtilsModule,
AppCommonModule.forRoot(),
ServiceProxyModule,
DataTableModule,
PaginatorModule
],
providers: [
ImpersonationService,
LinkedAccountService,
UserNotificationHelper,
ChatSignalrService,
QuickSideBarChat
]
})
export class AppModule { }
答案 0 :(得分:11)
我已修复此错误。在aspnnetzero中,有两个文件需要导入DataTable。我必须在app / main / main.module.ts中导入DataTable。
main.module.ts
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { DashboardComponent } from './dashboard/dashboard.component';
import { CategoriesComponent } from './categories/categories.component';
import { CreateOrEditCagoryModalComponent } from './categories/create-or-edit-category-modal.component';
import { ModalModule, TabsModule, TooltipModule } from 'ngx-bootstrap';
import { AppCommonModule } from '@app/shared/common/app-common.module';
import { UtilsModule } from '@shared/utils/utils.module';
import { MainRoutingModule } from './main-routing.module';
import { CountoModule } from '@node_modules/angular2-counto';
import { EasyPieChartModule } from 'ng2modules-easypiechart';
import { DataTableModule } from 'primeng/primeng'; // Here
import { PaginatorModule } from 'primeng/primeng'; // Here
@NgModule({
imports: [
CommonModule,
FormsModule,
ModalModule,
TabsModule,
TooltipModule,
AppCommonModule,
UtilsModule,
MainRoutingModule,
CountoModule,
EasyPieChartModule,
DataTableModule, // Added DataTableModule
PaginatorModule // Added PaginatorModule
],
declarations: [
DashboardComponent,
CategoriesComponent,
CreateOrEditCagoryModalComponent
]
})
export class MainModule { }
答案 1 :(得分:3)
如果将功能模块用于延迟加载,则也可能会出现此错误。 即使您在app.module.ts中有一个声明。您还必须将其导入功能模块中。
示例:您有一个称为“ pastorders”的功能模块。然后,您必须将其导入pastorders.module.ts文件中,如下所示
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import {PastordersRoutingModule} from './pastorders-routing.module';
import { PastordersComponent } from './pastorders/pastorders.component';
import {DataTableModule} from 'primeng/primeng'; // Declare here
@NgModule({
imports: [
CommonModule,
DataTableModule, // declare here
PastordersRoutingModule
],
declarations: [PastordersComponent]
})
export class PastordersModule { }
除了app.module.ts文件声明。
注意:在最新版本的primeng(V5及更高版本)中,它已重命名为“ TableModule”。进行更改之前,请检查您的package.json文件。
答案 2 :(得分:2)
在新版的angular中,从TableModule
中导入primeng/table
。
import { TableModule } from 'primeng/table';
@NgModule({
imports: [
// ...
TableModule,
// ...
]
})
export class AppModule {}
答案 3 :(得分:0)
我有同样的错误。但是我的 If 是不同的。如果你使用自定义的 html 标签,即一些库,那么它会报告模板解析错误。您可以通过在模块中添加 CUSTOM_ELEMENTS_SCHEMA 来修复它。
导入
import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from "@angular/core";
并将其添加到模块中的架构
schemas: [ CUSTOM_ELEMENTS_SCHEMA ]