无法绑定到 'items',因为它不是 'virtual-scroller' 的已知 属性
Can't bind to 'items' since it isn't a known property of 'virtual-scroller'
我在将虚拟滚动实现到我的 ionic 4 + Angular 项目时遇到了问题。
以前,我使用了 ionic 的虚拟滚动 (ion-virtual-scroll) 实现,它最初运行良好,但 运行 可以说是一个很大的警告,它不支持 ionic 的网格视图,这是我的应用程序需要。
(Ionic 已经在 'Feature requests' 下的回购协议中承认了这一点:https://github.com/ionic-team/ionic/issues/16632)
与此同时,我使用了 ngx-virtual-scroller (https://github.com/rintoj/ngx-virtual-scroller),因为它提供了多列支持
但是,我在项目中使用时遇到问题。
我已经通过 npm 安装了它(npm install ngx-virtual-scroller --save)并在我的 app.module
中导入了 VirtualScrollerMoudle
app.module.ts
import { VirtualScrollerModule } from 'ngx-virtual-scroller'
imports: [
...
VirtualScrollerModule
],
我已将 virtual-scroller 标签包裹在组件视图中的元素周围
产品名片-view.component.html
<virtual-scroller #scroll [items]="productsArray">
<div *ngIf="columnViewActive; else listView">
<ion-row>
<ion-col size="6" *ngFor="let p of scroll.viewPortItems">
<ion-card>
<ion-card-header>
<a class="productTitleColumn" title="{{ p.title }}" href="{{ p.link }}">{{ p.title }}</a>
</ion-card-header>
<ion-card-content>
..... ETC .....
</ion-card-content>
</ion-card>
</ion-col>
</ion-row>
</div>
</virtual-scroller>
但是我收到这个错误
控制台出错
core.js:9110 ERROR Error: Uncaught (in promise): Error: Template parse errors:
Can't bind to 'items' since it isn't a known property of 'virtual-scroller'.
1. If 'virtual-scroller' is an Angular component and it has 'items' input, then verify that it is part of this module.
2. If 'virtual-scroller' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component.
在寻找解决方案后,我 运行 找到了遇到类似问题但使用 Ionic 3 (https://github.com/rintoj/ngx-virtual-scroller/issues/85) 的其他人,他们的
解决方案是将 VirtualScrollMoudle 导入到使用它的子模块而不是全局应用程序模块中,并指示它可能必须要做的事情
对组件使用延迟加载。
不幸的是,我尝试过但没有成功。我试过将 VirtualScrollMoudle 导入到 app.module.ts,仅使用组件的父页面模块
仅 virtual-scoller 并且两者同时存在但 运行 进入同一问题。
home.module.ts
import { VirtualScrollerModule } from 'ngx-virtual-scroller'
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild([
{
path: '',
component: HomePage
}
]),
FontAwesomeModule,
ProductSharedModule,
HeaderFooterSharedModule,
HideHeaderSharedModule,
VirtualScrollerModule
],
declarations: [HomePage]
})
export class HomePageModule { }
我还确保导入语句位于底部,正如我所看到的那样,它成功地吸引了很多人(过去包括我自己)
是否有任何解决方案,或者我是否遗漏了一些非常明显的东西?
版本:
离子 4 (5.4.4)
Angular: 8.1.3
更新
非常感谢@Reactgular我已经解决了问题!
由于我的 product-card-view.component 在共享模块中,我需要在共享模块中导入虚拟滚动模块和 not 在 app.module.ts 或父页面模块
中分开
产品-shared.module.ts
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { IonicModule } from '@ionic/angular';
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
import { VirtualScrollerModule } from 'ngx-virtual-scroller';
// Product card component
import { ProductCardViewComponent } from '../../components/products/product-card-view/product-card-view.component';
@NgModule({
declarations: [ProductCardViewComponent],
imports: [CommonModule, IonicModule, FontAwesomeModule, VirtualScrollerModule],
exports: [ProductCardViewComponent]
})
export class ProductSharedModule { }
我会留下这个答案,希望它能对以后遇到类似问题的任何人有所帮助
我在将虚拟滚动实现到我的 ionic 4 + Angular 项目时遇到了问题。
以前,我使用了 ionic 的虚拟滚动 (ion-virtual-scroll) 实现,它最初运行良好,但 运行 可以说是一个很大的警告,它不支持 ionic 的网格视图,这是我的应用程序需要。 (Ionic 已经在 'Feature requests' 下的回购协议中承认了这一点:https://github.com/ionic-team/ionic/issues/16632)
与此同时,我使用了 ngx-virtual-scroller (https://github.com/rintoj/ngx-virtual-scroller),因为它提供了多列支持
但是,我在项目中使用时遇到问题。
我已经通过 npm 安装了它(npm install ngx-virtual-scroller --save)并在我的 app.module
中导入了 VirtualScrollerMoudleapp.module.ts
import { VirtualScrollerModule } from 'ngx-virtual-scroller'
imports: [
...
VirtualScrollerModule
],
我已将 virtual-scroller 标签包裹在组件视图中的元素周围
产品名片-view.component.html
<virtual-scroller #scroll [items]="productsArray">
<div *ngIf="columnViewActive; else listView">
<ion-row>
<ion-col size="6" *ngFor="let p of scroll.viewPortItems">
<ion-card>
<ion-card-header>
<a class="productTitleColumn" title="{{ p.title }}" href="{{ p.link }}">{{ p.title }}</a>
</ion-card-header>
<ion-card-content>
..... ETC .....
</ion-card-content>
</ion-card>
</ion-col>
</ion-row>
</div>
</virtual-scroller>
但是我收到这个错误
控制台出错
core.js:9110 ERROR Error: Uncaught (in promise): Error: Template parse errors: Can't bind to 'items' since it isn't a known property of 'virtual-scroller'. 1. If 'virtual-scroller' is an Angular component and it has 'items' input, then verify that it is part of this module. 2. If 'virtual-scroller' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message. 3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component.
在寻找解决方案后,我 运行 找到了遇到类似问题但使用 Ionic 3 (https://github.com/rintoj/ngx-virtual-scroller/issues/85) 的其他人,他们的 解决方案是将 VirtualScrollMoudle 导入到使用它的子模块而不是全局应用程序模块中,并指示它可能必须要做的事情 对组件使用延迟加载。
不幸的是,我尝试过但没有成功。我试过将 VirtualScrollMoudle 导入到 app.module.ts,仅使用组件的父页面模块 仅 virtual-scoller 并且两者同时存在但 运行 进入同一问题。
home.module.ts
import { VirtualScrollerModule } from 'ngx-virtual-scroller'
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild([
{
path: '',
component: HomePage
}
]),
FontAwesomeModule,
ProductSharedModule,
HeaderFooterSharedModule,
HideHeaderSharedModule,
VirtualScrollerModule
],
declarations: [HomePage]
})
export class HomePageModule { }
我还确保导入语句位于底部,正如我所看到的那样,它成功地吸引了很多人(过去包括我自己)
是否有任何解决方案,或者我是否遗漏了一些非常明显的东西?
版本:
离子 4 (5.4.4)
Angular: 8.1.3
更新
非常感谢@Reactgular我已经解决了问题!
由于我的 product-card-view.component 在共享模块中,我需要在共享模块中导入虚拟滚动模块和 not 在 app.module.ts 或父页面模块
中分开产品-shared.module.ts
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { IonicModule } from '@ionic/angular';
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
import { VirtualScrollerModule } from 'ngx-virtual-scroller';
// Product card component
import { ProductCardViewComponent } from '../../components/products/product-card-view/product-card-view.component';
@NgModule({
declarations: [ProductCardViewComponent],
imports: [CommonModule, IonicModule, FontAwesomeModule, VirtualScrollerModule],
exports: [ProductCardViewComponent]
})
export class ProductSharedModule { }
我会留下这个答案,希望它能对以后遇到类似问题的任何人有所帮助