Value of scrollHeight is undefined?
up vote
0
down vote
favorite
I'm new to Angular and wanted to implement Infinite Scroll, but my values of scrollHeight
is undefined.I'm using ElementRef
from @angular/core
.Here's my code.
@Input() eachElementHeightInPx = 20;
@Input() fetchThreshold = 5;
private element: HTMLElement = this.elementRef.nativeElement;
constructor(private elementRef: ElementRef) { }
@HostListener('scroll', ['$event'])
onScrollContainer($event: any) {
console.log('scrollContainer');
console.log('scrollHeight ' + this.element.scrollHeight); // it is undefined idk why!!.
console.log(typeof (this.element[0]));
if (this.element.scrollHeight > this.lastCheckedHeight) {
this.previousScrollHeight = this.element.scrollHeight;
let remainingHeight = this.element.scrollHeight -
(this.element.offsetHeight + this.element.scrollTop);
let remainingElement = Math.ceil(remainingHeight /
this.eachElementHeightInPx);
if (remainingElement < this.fetchThreshold) {
this.lastCheckedHeight = this.element.scrollHeight;
// this.fetchMore.emit();
console.log('emitting');
}
} else if (this.element.scrollHeight < this.previousScrollHeight) { // To check if the list is reloaded
this.previousScrollHeight = this.element.scrollHeight;
this.lastCheckedHeight = 0;
this.element.scrollTop = 0; // Scroll the list to top
}
}
Here's my function snapshot just in case the above code is not lill confusing.
Click Here.
Please explaing ways that do not include jQuery.Thanks.
UPDATE:VERY MINIMAL STACKBLITZ REPRODUCTION
https://stackblitz.com/edit/angular-qngk3b
javascript angular typescript
|
show 1 more comment
up vote
0
down vote
favorite
I'm new to Angular and wanted to implement Infinite Scroll, but my values of scrollHeight
is undefined.I'm using ElementRef
from @angular/core
.Here's my code.
@Input() eachElementHeightInPx = 20;
@Input() fetchThreshold = 5;
private element: HTMLElement = this.elementRef.nativeElement;
constructor(private elementRef: ElementRef) { }
@HostListener('scroll', ['$event'])
onScrollContainer($event: any) {
console.log('scrollContainer');
console.log('scrollHeight ' + this.element.scrollHeight); // it is undefined idk why!!.
console.log(typeof (this.element[0]));
if (this.element.scrollHeight > this.lastCheckedHeight) {
this.previousScrollHeight = this.element.scrollHeight;
let remainingHeight = this.element.scrollHeight -
(this.element.offsetHeight + this.element.scrollTop);
let remainingElement = Math.ceil(remainingHeight /
this.eachElementHeightInPx);
if (remainingElement < this.fetchThreshold) {
this.lastCheckedHeight = this.element.scrollHeight;
// this.fetchMore.emit();
console.log('emitting');
}
} else if (this.element.scrollHeight < this.previousScrollHeight) { // To check if the list is reloaded
this.previousScrollHeight = this.element.scrollHeight;
this.lastCheckedHeight = 0;
this.element.scrollTop = 0; // Scroll the list to top
}
}
Here's my function snapshot just in case the above code is not lill confusing.
Click Here.
Please explaing ways that do not include jQuery.Thanks.
UPDATE:VERY MINIMAL STACKBLITZ REPRODUCTION
https://stackblitz.com/edit/angular-qngk3b
javascript angular typescript
2
Just a sidenote : if you want an infinite scroll, use the CDK, it will be easier. If you want to train, then good luck !
– trichetriche
Nov 21 at 11:37
Just to make sure: Is it just thescrollHeight
property which isn't defined or is itthis.element
?
– ShamPooSham
Nov 21 at 11:37
1
yeah well said @trichetriche , Angular CDK is very good option for such use case, if it suits your requirements
– Pardeep Jain
Nov 21 at 11:40
Could you provide a Minimal, Complete, and Verifiable example of your issue on stackblitz.com ? It would be easier for us to identify the issue
– trichetriche
Nov 21 at 11:42
@trichetriche stackblitz link is there now. Please Check.
– Gaurav Singh
Nov 21 at 12:47
|
show 1 more comment
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I'm new to Angular and wanted to implement Infinite Scroll, but my values of scrollHeight
is undefined.I'm using ElementRef
from @angular/core
.Here's my code.
@Input() eachElementHeightInPx = 20;
@Input() fetchThreshold = 5;
private element: HTMLElement = this.elementRef.nativeElement;
constructor(private elementRef: ElementRef) { }
@HostListener('scroll', ['$event'])
onScrollContainer($event: any) {
console.log('scrollContainer');
console.log('scrollHeight ' + this.element.scrollHeight); // it is undefined idk why!!.
console.log(typeof (this.element[0]));
if (this.element.scrollHeight > this.lastCheckedHeight) {
this.previousScrollHeight = this.element.scrollHeight;
let remainingHeight = this.element.scrollHeight -
(this.element.offsetHeight + this.element.scrollTop);
let remainingElement = Math.ceil(remainingHeight /
this.eachElementHeightInPx);
if (remainingElement < this.fetchThreshold) {
this.lastCheckedHeight = this.element.scrollHeight;
// this.fetchMore.emit();
console.log('emitting');
}
} else if (this.element.scrollHeight < this.previousScrollHeight) { // To check if the list is reloaded
this.previousScrollHeight = this.element.scrollHeight;
this.lastCheckedHeight = 0;
this.element.scrollTop = 0; // Scroll the list to top
}
}
Here's my function snapshot just in case the above code is not lill confusing.
Click Here.
Please explaing ways that do not include jQuery.Thanks.
UPDATE:VERY MINIMAL STACKBLITZ REPRODUCTION
https://stackblitz.com/edit/angular-qngk3b
javascript angular typescript
I'm new to Angular and wanted to implement Infinite Scroll, but my values of scrollHeight
is undefined.I'm using ElementRef
from @angular/core
.Here's my code.
@Input() eachElementHeightInPx = 20;
@Input() fetchThreshold = 5;
private element: HTMLElement = this.elementRef.nativeElement;
constructor(private elementRef: ElementRef) { }
@HostListener('scroll', ['$event'])
onScrollContainer($event: any) {
console.log('scrollContainer');
console.log('scrollHeight ' + this.element.scrollHeight); // it is undefined idk why!!.
console.log(typeof (this.element[0]));
if (this.element.scrollHeight > this.lastCheckedHeight) {
this.previousScrollHeight = this.element.scrollHeight;
let remainingHeight = this.element.scrollHeight -
(this.element.offsetHeight + this.element.scrollTop);
let remainingElement = Math.ceil(remainingHeight /
this.eachElementHeightInPx);
if (remainingElement < this.fetchThreshold) {
this.lastCheckedHeight = this.element.scrollHeight;
// this.fetchMore.emit();
console.log('emitting');
}
} else if (this.element.scrollHeight < this.previousScrollHeight) { // To check if the list is reloaded
this.previousScrollHeight = this.element.scrollHeight;
this.lastCheckedHeight = 0;
this.element.scrollTop = 0; // Scroll the list to top
}
}
Here's my function snapshot just in case the above code is not lill confusing.
Click Here.
Please explaing ways that do not include jQuery.Thanks.
UPDATE:VERY MINIMAL STACKBLITZ REPRODUCTION
https://stackblitz.com/edit/angular-qngk3b
javascript angular typescript
javascript angular typescript
edited Nov 21 at 12:44
asked Nov 21 at 11:27
Gaurav Singh
163
163
2
Just a sidenote : if you want an infinite scroll, use the CDK, it will be easier. If you want to train, then good luck !
– trichetriche
Nov 21 at 11:37
Just to make sure: Is it just thescrollHeight
property which isn't defined or is itthis.element
?
– ShamPooSham
Nov 21 at 11:37
1
yeah well said @trichetriche , Angular CDK is very good option for such use case, if it suits your requirements
– Pardeep Jain
Nov 21 at 11:40
Could you provide a Minimal, Complete, and Verifiable example of your issue on stackblitz.com ? It would be easier for us to identify the issue
– trichetriche
Nov 21 at 11:42
@trichetriche stackblitz link is there now. Please Check.
– Gaurav Singh
Nov 21 at 12:47
|
show 1 more comment
2
Just a sidenote : if you want an infinite scroll, use the CDK, it will be easier. If you want to train, then good luck !
– trichetriche
Nov 21 at 11:37
Just to make sure: Is it just thescrollHeight
property which isn't defined or is itthis.element
?
– ShamPooSham
Nov 21 at 11:37
1
yeah well said @trichetriche , Angular CDK is very good option for such use case, if it suits your requirements
– Pardeep Jain
Nov 21 at 11:40
Could you provide a Minimal, Complete, and Verifiable example of your issue on stackblitz.com ? It would be easier for us to identify the issue
– trichetriche
Nov 21 at 11:42
@trichetriche stackblitz link is there now. Please Check.
– Gaurav Singh
Nov 21 at 12:47
2
2
Just a sidenote : if you want an infinite scroll, use the CDK, it will be easier. If you want to train, then good luck !
– trichetriche
Nov 21 at 11:37
Just a sidenote : if you want an infinite scroll, use the CDK, it will be easier. If you want to train, then good luck !
– trichetriche
Nov 21 at 11:37
Just to make sure: Is it just the
scrollHeight
property which isn't defined or is it this.element
?– ShamPooSham
Nov 21 at 11:37
Just to make sure: Is it just the
scrollHeight
property which isn't defined or is it this.element
?– ShamPooSham
Nov 21 at 11:37
1
1
yeah well said @trichetriche , Angular CDK is very good option for such use case, if it suits your requirements
– Pardeep Jain
Nov 21 at 11:40
yeah well said @trichetriche , Angular CDK is very good option for such use case, if it suits your requirements
– Pardeep Jain
Nov 21 at 11:40
Could you provide a Minimal, Complete, and Verifiable example of your issue on stackblitz.com ? It would be easier for us to identify the issue
– trichetriche
Nov 21 at 11:42
Could you provide a Minimal, Complete, and Verifiable example of your issue on stackblitz.com ? It would be easier for us to identify the issue
– trichetriche
Nov 21 at 11:42
@trichetriche stackblitz link is there now. Please Check.
– Gaurav Singh
Nov 21 at 12:47
@trichetriche stackblitz link is there now. Please Check.
– Gaurav Singh
Nov 21 at 12:47
|
show 1 more comment
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53411108%2fvalue-of-scrollheight-is-undefined%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
2
Just a sidenote : if you want an infinite scroll, use the CDK, it will be easier. If you want to train, then good luck !
– trichetriche
Nov 21 at 11:37
Just to make sure: Is it just the
scrollHeight
property which isn't defined or is itthis.element
?– ShamPooSham
Nov 21 at 11:37
1
yeah well said @trichetriche , Angular CDK is very good option for such use case, if it suits your requirements
– Pardeep Jain
Nov 21 at 11:40
Could you provide a Minimal, Complete, and Verifiable example of your issue on stackblitz.com ? It would be easier for us to identify the issue
– trichetriche
Nov 21 at 11:42
@trichetriche stackblitz link is there now. Please Check.
– Gaurav Singh
Nov 21 at 12:47