我尝试过使用ngx-infinite-scroll(https://www.npmjs.com/package/angular2-infinite-scroll)以及其他一些指令,但似乎都没有。
的package.json
"dependencies": {
"@angular/animations": "^4.0.2",
"@angular/common": "^4.0.0",
"@angular/compiler": "^4.0.0",
"@angular/compiler-cli": "^4.0.2",
"@angular/core": "^4.0.0",
"@angular/forms": "^4.0.0",
"@angular/http": "^4.0.0",
"@angular/platform-browser": "^4.0.0",
"@angular/platform-browser-dynamic": "^4.0.0",
"@angular/platform-server": "^4.0.2",
"@angular/router": "^4.0.0",
"absurd": "^0.3.8",
"angular2-masonry": "^0.4.0",
"animate.css": "^3.5.2",
"bootstrap": "^3.3.7",
"core-js": "^2.4.1",
"font-awesome": "^4.7.0",
"jquery": "^3.2.1",
"jquery-slimscroll": "^1.3.8",
"metismenu": "^2.7.0",
"ng2-bs3-modal": "^0.10.4",
"ngx-infinite-scroll": "^0.5.1",
"rxjs": "^5.1.0"
}
user.component.html
<div class="row" infiniteScroll [infiniteScrollDistance]="0"
[infiniteScrollThrottle]="300" (scrolled)="loadMore()">
<div class="col-md-3 col-sm-4" *ngFor="let user of userList">
<span>{{user.name}} ({{user.email}})</span>
</div>
</div>
user.module.ts
导入完成
import { InfiniteScrollModule } from 'ngx-infinite-scroll';
@NgModule({
imports: [
CommonModule,
FormsModule,
InfiniteScrollModule
],
declarations: [UserComponent],
providers: [],
exports: [],
})
export class UserModule { }
user.component.ts
export class UserComponent {
constructor() {}
loadMore() {
console.log('method begins');
}
}
尝试使用主机侦听器,但似乎没有发生滚动事件。 它与我正在使用的无限滚动应用的类有什么关系吗?
答案 0 :(得分:15)
document里面提到过。
默认情况下,指令侦听窗口滚动事件和 调用了回调。在实际元素时触发回调 滚动,应配置这些设置:
- [滚屏] = “假”
- 为元素
设置explict css“height”值 醇>
因此,只需将高度:100%放在容器上,您就会看到滚动的已触发。
import { Component } from '@angular/core';
@Component({
selector: 'app',
styles: [
`.search-results {
height: 20rem;
overflow: scroll;
}`
],
template: `
<div class="search-results"
infiniteScroll
[infiniteScrollDistance]="2"
[infiniteScrollThrottle]="500"
(scrolled)="onScroll()"
[scrollWindow]="false">
</div>
`
})
export class AppComponent {
onScroll () {
console.log('scrolled!!')
}
}
答案 1 :(得分:1)
<div
[infiniteScrollDistance]="2"
[infiniteScrollUpDistance]="1.5"
[infiniteScrollThrottle]="100"
(scrolled)="onScrollDown()"
[scrollWindow]="false"class="search-results">
<div *ngFor="let user of userList">
<span>{{user.name}} ({{user.email}})</span>
</div>
</div>
.search-结果{ 身高:100% overflow-y:scroll; }
使用上面的HTML代码,它可以正常工作 - ngx-infinite-scroll
答案 2 :(得分:0)
您必须设置容器div的高度
<div class="row" style="height: 90%"
infiniteScroll [infiniteScrollDistance]="0"
[infiniteScrollThrottle]="300" (scrolled)="loadMore()">
<div class="col-md-3 col-sm-4" *ngFor="let user of userList">
<span>{{user.name}} ({{user.email}})</span>
</div>
</div>