import {ScrollingModule} from '@angular/cdk/scrolling';
ScrollDispatcher
本服务包含所有已注册的可滚动对象的引用,并在任何一个可滚动对象的引用发出滚动事件时触发事件。
名称 | 描述 |
---|---|
|
所有可滚动对象引用的映射表,由可滚动对象及其对滚动事件的订阅组成。 |
ancestorScrolled | |
---|---|
返回一个可观察对象,它只在元素的任何可滚动祖先发生滚动时才会触发。 |
|
参数 | |
elementOrElementRef HTMLElement | ElementRef<any>
|
祖先要监听的元素。 |
auditTimeInMs ? number
|
要对滚动事件进行限流的毫秒数。 |
返回值 | |
Observable<CdkScrollable | void>
|
|
deregister | |
---|---|
注销一个可滚动对象的引用,并从它的 scroll 事件的可观察对象中取消订阅。 |
|
参数 | |
scrollable CdkScrollable
|
要注销的可滚动实例。 |
getAncestorScrollContainers | |
---|---|
返回所有包含所指定元素的已注册可滚动对象。 |
|
参数 | |
elementOrElementRef HTMLElement | ElementRef<any>
|
|
返回值 | |
CdkScrollable[]
|
|
register | |
---|---|
使用该服务注册一个可滚动的实例,并侦听其滚动的事件。当可滚动对象发生滚动时,此服务会把事件发送到记录其滚动的可观察对象中。 |
|
参数 | |
scrollable CdkScrollable
|
要注册的可滚动对象实例。 |
scrolled | |
---|---|
返回一个可观察对象,它会在任何已注册的可滚动对象引用(或 window, document, body)中发生滚动事件时发出一个事件。可以提供一个毫秒数来来改写默认的“限流”时间。 注意:为了避免每次滚动事件都发生变更检测,从这个流发出的所有事件都会在 Angular Zone 之外运行。如果你要在滚动事件中更新任何数据绑定,就必须使用 |
|
参数 | |
auditTimeInMs number = DEFAULT_SCROLL_TIME
|
|
返回值 | |
Observable<CdkScrollable | void>
|
|
CdkScrollable
该指令的元素发生滚动时发送一个事件。使用 ScrollDispatcher 服务注册自己,以便把自己包含在滚动事件集合中,并通过该服务来监听。
选择器: [cdk-scrollable] [cdkScrollable]
名称 | 描述 |
---|---|
|
|
|
|
|
|
|
elementScrolled | |
---|---|
返回在宿主元素上发生 scroll 事件时会触发的可观察对象。 |
|
返回值 | |
Observable<Event>
|
|
getElementRef | |
---|---|
获取视口的 ElementRef。 |
|
返回值 | |
ElementRef<HTMLElement>
|
|
measureScrollOffset | |
---|---|
测量相对于视口指定边缘的滚动偏移量。这个方法可以用来代替对 scrollLeft 或 scrollTop 的直接检查,因为各浏览器对于 scrollLeft 在 RTL 中的理解并不一致。 该方法返回的值是标准化的,左右都总是指向滚动容器的左侧和右侧,与布局方向无关。start 和 end 在 LTR 上下文中指向左右,在 RTL 上下文则相反。 |
|
参数 | |
from "top" | "bottom" | "start" | "end" | "left" | "right"
|
要测量的边缘。 |
返回值 | |
number
|
|
scrollTo | |
---|---|
滚动到指定的偏移量。这是浏览器原生 scrollTo 方法的标准化版本,因为各个浏览器对于 scrollLeft 在 RTL 中的理解并不一致。 对于此方法,无论布局方向如何,左右都总是指向滚动容器的左侧和右侧。start 和 end 在 LTR 上下文中分别指向左右,在 RTL 上下文中则相反。 |
|
参数 | |
options ExtendedScrollToOptions
|
指定要滚动到的偏移量。 |
CdkFixedSizeVirtualScroll
支持固定大小的虚拟滚动策略。
选择器: cdk-virtual-scroll-viewport[itemSize]
名称 | 描述 |
---|---|
@Input()
|
列表中条目的大小(以像素为单位)。 |
@Input()
|
渲染新条目时要渲染的缓冲区的像素数。默认为 200px。 |
@Input()
|
缓存在视口之外的最小缓冲区数(以像素为单位)。当缓冲区的数量低于这个数时,就会渲染出更多的条目。默认为 100px。 |
CdkVirtualForOf
类似于 ngForOf
的指令,用于渲染虚拟滚动容器中的数据。
选择器: [cdkVirtualFor][cdkVirtualForOf]
名称 | 描述 |
---|---|
@Input()
|
要显示的 DataSource。 |
@Input()
|
用来生成新元素的模板。 |
@Input()
|
缓存的大小,用于存放那些以前没有用过的模板。如果将缓存大小设置为 |
@Input()
|
|
|
只要当前 DataSource 中的数据发生变化,就会发出通知。 |
|
当渲染的数据视图发生变化时触发。 |
measureRangeSize | |
---|---|
测量指定范围内所有条目的组合大小(水平方向的宽度,垂直方向的高度)。如果该范围包含当前尚未渲染过的条目,则会引发错误。 |
|
参数 | |
range ListRange
|
|
orientation "vertical" | "horizontal"
|
|
返回值 | |
number
|
|
CdkVirtualScrollViewport
extends CdkVirtualScrollable 借助 CdkVirtualForOf
虚拟化滚动行为的视口。
选择器: cdk-virtual-scroll-viewport
名称 | 描述 |
---|---|
@Input({ transform: booleanAttribute })
|
滚动出视图后,渲染的条目是否应该保留在 DOM 中。默认情况下,条目将被删除。 |
@Input()
|
视口滚动的方向。 |
@Output()
|
当视口中可见的第一个元素的索引发生变化时触发。 |
|
|
|
每当渲染范围发生变化时都会发出通知的流。 |
|
attach | |
---|---|
把 |
|
参数 | |
forOf CdkVirtualScrollRepeater<any>
|
|
checkViewportSize | |
---|---|
更新视口规格并重新渲染。 |
detach | |
---|---|
拆除当前的 |
elementScrolled | |
---|---|
返回在宿主元素上发生 scroll 事件时会触发的可观察对象。 |
|
返回值 | |
Observable<Event>
|
|
getDataLength | |
---|---|
获取绑定到该视口的数据的长度(以条目数表示)。 |
|
返回值 | |
number
|
|
getElementRef | |
---|---|
获取视口的 ElementRef。 |
|
返回值 | |
ElementRef<HTMLElement>
|
|
getOffsetToRenderedContentStart | |
---|---|
获取从视口起点到渲染数据起始位置的偏移量(以像素为单位)。 |
|
返回值 | |
number | null
|
|
getRenderedRange | |
---|---|
获取当前渲染的条目范围。 |
|
返回值 | |
ListRange
|
|
getViewportSize | |
---|---|
获取视口的大小(以像素为单位)。 |
|
返回值 | |
number
|
|
measureBoundingClientRectWithScrollOffset | |
---|---|
参数 | |
from "top" | "bottom" | "left" | "right"
|
|
返回值 | |
number
|
|
measureRangeSize | |
---|---|
测量指定范围的总组合大小。如果该范围包含未渲染的条目,则抛出此异常。 |
|
参数 | |
range ListRange
|
|
返回值 | |
number
|
|
measureRenderedContentSize | |
---|---|
测量所有渲染条目的组合大小。 |
|
返回值 | |
number
|
|
measureScrollOffset | |
---|---|
从可滚动区的开头得到当前的滚动偏移量(以像素为单位)。 |
|
参数 | |
from ? "top" | "bottom" | "start" | "end" | "left" | "right"
|
测量到边缘的偏移。在垂直模式下默认为 “top”,在水平模式下默认为 “start”。 |
返回值 | |
number
|
|
measureViewportOffset | |
---|---|
测量视口相对于滚动容器的偏移量 |
|
参数 | |
from ? "top" | "bottom" | "start" | "end" | "left" | "right"
|
要测量的边缘。 |
measureViewportSize | |
---|---|
测量给定方向的视口大小。 |
|
参数 | |
orientation "vertical" | "horizontal"
|
测量尺寸的方向。 |
scrollTo | |
---|---|
滚动到指定的偏移量。这是浏览器原生 scrollTo 方法的标准化版本,因为各个浏览器对于 scrollLeft 在 RTL 中的理解并不一致。 对于此方法,无论布局方向如何,左右都总是指向滚动容器的左侧和右侧。start 和 end 在 LTR 上下文中分别指向左右,在 RTL 上下文中则相反。 |
|
参数 | |
options ExtendedScrollToOptions
|
指定要滚动到的偏移量。 |
scrollToIndex | |
---|---|
滚动到指定索引处的偏移量。 |
|
参数 | |
index number
|
要滚动的元素的索引。 |
behavior ScrollBehavior = 'auto'
|
滚动时要使用的 ScrollBehavior。行为默认是 |
scrollToOffset | |
---|---|
从视口开始处滚动到指定的偏移量。请注意,这并不会总是与设置 |
|
参数 | |
offset number
|
要滚动到的偏移量。 |
behavior ScrollBehavior = 'auto'
|
滚动时要使用的 ScrollBehavior。行为默认是 |
setRenderedContentOffset | |
---|---|
设置从视口起点到渲染数据起点或终点的偏移量(以像素为单位)。 |
|
参数 | |
offset number
|
|
to "to-start" | "to-end" = 'to-start'
|
|
setRenderedRange | |
---|---|
设置当前渲染的索引范围。 |
|
参数 | |
range ListRange
|
|
setTotalContentSize | |
---|---|
设置所有内容的总大小(以像素为单位),包括当前未渲染的内容。 |
|
参数 | |
size number
|
|
CdkVirtualScrollableElement
extends CdkVirtualScrollable 为附着到的元素提供一个虚拟可滚动。
选择器: [cdkVirtualScrollingElement]
elementScrolled | |
---|---|
返回在宿主元素上发生 scroll 事件时会触发的可观察对象。 |
|
返回值 | |
Observable<Event>
|
|
getElementRef | |
---|---|
获取视口的 ElementRef。 |
|
返回值 | |
ElementRef<HTMLElement>
|
|
measureBoundingClientRectWithScrollOffset | |
---|---|
参数 | |
from "top" | "bottom" | "left" | "right"
|
|
返回值 | |
number
|
|
measureScrollOffset | |
---|---|
测量相对于视口指定边缘的滚动偏移量。这个方法可以用来代替对 scrollLeft 或 scrollTop 的直接检查,因为各浏览器对于 scrollLeft 在 RTL 中的理解并不一致。 该方法返回的值是标准化的,左右都总是指向滚动容器的左侧和右侧,与布局方向无关。start 和 end 在 LTR 上下文中指向左右,在 RTL 上下文则相反。 |
|
参数 | |
from "top" | "bottom" | "start" | "end" | "left" | "right"
|
要测量的边缘。 |
返回值 | |
number
|
|
measureViewportSize | |
---|---|
测量给定方向的视口大小。 |
|
参数 | |
orientation "vertical" | "horizontal"
|
测量尺寸的方向。 |
scrollTo | |
---|---|
滚动到指定的偏移量。这是浏览器原生 scrollTo 方法的标准化版本,因为各个浏览器对于 scrollLeft 在 RTL 中的理解并不一致。 对于此方法,无论布局方向如何,左右都总是指向滚动容器的左侧和右侧。start 和 end 在 LTR 上下文中分别指向左右,在 RTL 上下文中则相反。 |
|
参数 | |
options ExtendedScrollToOptions
|
指定要滚动到的偏移量。 |
CdkVirtualScrollableWindow
继承自 CdkVirtualScrollable 为全局/窗口滚动条提供虚拟可滚动。
选择器: cdk-virtual-scroll-viewport[scrollWindow]
elementScrolled | |
---|---|
返回在宿主元素上发生 scroll 事件时会触发的可观察对象。 |
|
返回值 | |
Observable<Event>
|
|
getElementRef | |
---|---|
获取视口的 ElementRef。 |
|
返回值 | |
ElementRef<HTMLElement>
|
|
measureBoundingClientRectWithScrollOffset | |
---|---|
参数 | |
from "top" | "bottom" | "left" | "right"
|
|
返回值 | |
number
|
|
measureScrollOffset | |
---|---|
测量相对于视口指定边缘的滚动偏移量。这个方法可以用来代替对 scrollLeft 或 scrollTop 的直接检查,因为各浏览器对于 scrollLeft 在 RTL 中的理解并不一致。 该方法返回的值是标准化的,左右都总是指向滚动容器的左侧和右侧,与布局方向无关。start 和 end 在 LTR 上下文中指向左右,在 RTL 上下文则相反。 |
|
参数 | |
from "top" | "bottom" | "start" | "end" | "left" | "right"
|
要测量的边缘。 |
返回值 | |
number
|
|
measureViewportSize | |
---|---|
测量给定方向的视口大小。 |
|
参数 | |
orientation "vertical" | "horizontal"
|
测量尺寸的方向。 |
scrollTo | |
---|---|
滚动到指定的偏移量。这是浏览器原生 scrollTo 方法的标准化版本,因为各个浏览器对于 scrollLeft 在 RTL 中的理解并不一致。 对于此方法,无论布局方向如何,左右都总是指向滚动容器的左侧和右侧。start 和 end 在 LTR 上下文中分别指向左右,在 RTL 上下文中则相反。 |
|
参数 | |
options ExtendedScrollToOptions
|
指定要滚动到的偏移量。 |
FixedSizeVirtualScrollStrategy
具有固定大小已知条目列表的虚拟滚动策略。
attach | |
---|---|
把这个滚动策略附着到视口中。 |
|
参数 | |
viewport CdkVirtualScrollViewport
|
要把此策略附着到的视口。 |
detach | |
---|---|
这个滚动策略是从当前连接的视口中拆除出来的。 |
scrollToIndex | |
---|---|
滚动到指定索引的偏移量。 |
|
参数 | |
index number
|
要滚动的元素的索引。 |
behavior ScrollBehavior
|
滚动时要使用的 ScrollBehavior。 |
updateItemAndBufferSize | |
---|---|
更新条目大小和缓冲区大小。 |
|
参数 | |
itemSize number
|
虚拟滚动列表中各条目的大小。 |
minBufferPx number
|
在需要渲染更多内容之前,缓冲区的最小量(以像素为单位) |
maxBufferPx number
|
渲染时要渲染的缓冲区(以像素为单位)。 |
CdkVirtualScrollable
继承自 CdkScrollable 扩展 {@link CdkScrollable} 以用作虚拟滚动的滚动容器。
elementScrolled | |
---|---|
返回在宿主元素上发生 scroll 事件时会触发的可观察对象。 |
|
返回值 | |
Observable<Event>
|
|
getElementRef | |
---|---|
获取视口的 ElementRef。 |
|
返回值 | |
ElementRef<HTMLElement>
|
|
measureBoundingClientRectWithScrollOffset | |
---|---|
测量包含滚动偏移量的边界 DOMRect 大小。 |
|
参数 | |
from "top" | "bottom" | "left" | "right"
|
要测量的边缘。 |
返回值 | |
number
|
|
measureScrollOffset | |
---|---|
测量相对于视口指定边缘的滚动偏移量。这个方法可以用来代替对 scrollLeft 或 scrollTop 的直接检查,因为各浏览器对于 scrollLeft 在 RTL 中的理解并不一致。 该方法返回的值是标准化的,左右都总是指向滚动容器的左侧和右侧,与布局方向无关。start 和 end 在 LTR 上下文中指向左右,在 RTL 上下文则相反。 |
|
参数 | |
from "top" | "bottom" | "start" | "end" | "left" | "right"
|
要测量的边缘。 |
返回值 | |
number
|
|
measureViewportSize | |
---|---|
测量给定方向的视口大小。 |
|
参数 | |
orientation "vertical" | "horizontal"
|
测量尺寸的方向。 |
scrollTo | |
---|---|
滚动到指定的偏移量。这是浏览器原生 scrollTo 方法的标准化版本,因为各个浏览器对于 scrollLeft 在 RTL 中的理解并不一致。 对于此方法,无论布局方向如何,左右都总是指向滚动容器的左侧和右侧。start 和 end 在 LTR 上下文中分别指向左右,在 RTL 上下文中则相反。 |
|
参数 | |
options ExtendedScrollToOptions
|
指定要滚动到的偏移量。 |
ViewportScrollPosition
在每个方向上保存视口滚动位置的对象。
名称 | 描述 |
---|---|
|
|
|
VirtualScrollStrategy
该策略决定了应该在视口中渲染哪些条目。
名称 | 描述 |
---|---|
|
当视口中可见的第一个元素的索引发生变化时触发。 |
attach | |
---|---|
把这个滚动策略附着到视口中。 |
|
参数 | |
viewport CdkVirtualScrollViewport
|
要把此策略附着到的视口。 |
detach | |
---|---|
这个滚动策略是从当前连接的视口中拆除出来的。 |
onContentRendered | |
---|---|
当 DOM 中渲染的条目范围发生变化时调用。 |
onContentScrolled | |
---|---|
在视口发生滚动时调用(使用 requestAnimationFrame 来防抖)。 |
onDataLengthChanged | |
---|---|
当数据长度发生变化时调用。 |
onRenderedOffsetChanged | |
---|---|
当渲染条目的偏移量发生变化时调用。 |
scrollToIndex | |
---|---|
滚动到指定索引的偏移量。 |
|
参数 | |
index number
|
要滚动的元素的索引。 |
behavior ScrollBehavior
|
滚动时要使用的 ScrollBehavior。 |
CdkVirtualScrollRepeater
要被 VirtualScrollViewport 重复的条目
名称 | 描述 |
---|---|
|
measureRangeSize | |
---|---|
参数 | |
range ListRange
|
|
orientation "vertical" | "horizontal"
|
|
返回值 | |
number
|
|
ExtendedScrollToOptions
ScrollToOptions 的扩展版本,允许表达相对于视口顶部、底部、左侧、右侧、开头或结尾的滚动偏移量,而不仅仅是顶部和左侧。 请注意:top 和 bottom 属性是互斥的,left 和 right、start 和 end 属性也是如此。
type ExtendedScrollToOptions = _XAxis & _YAxis & ScrollOptions;
CdkVirtualForOfContext
CdkVirtualForOf
渲染的条目的上下文
type CdkVirtualForOfContext = {
$implicit: T;
cdkVirtualForOf: DataSource<T> | Observable<T[]> | NgIterable<T>;
index: number;
count: number;
first: boolean;
last: boolean;
even: boolean;
odd: boolean;
};
DEFAULT_SCROLL_TIME
默认情况下以毫秒为单位的时间来限制滚动事件的频度。
const DEFAULT_SCROLL_TIME: 20;
DEFAULT_RESIZE_TIME
resize 事件的默认节流时间(毫秒数)。
const DEFAULT_RESIZE_TIME: 20;
VIRTUAL_SCROLL_STRATEGY
这个注入令牌用来指定虚拟滚动策略。
const VIRTUAL_SCROLL_STRATEGY: InjectionToken<VirtualScrollStrategy>;
VIRTUAL_SCROLLABLE
const VIRTUAL_SCROLLABLE: InjectionToken<CdkVirtualScrollable>;