角材料paginator的方法以_
开头。
_changePageSize(pageSize: number) {
// Current page needs to be updated to reflect the new page size. Navigate to the page
// containing the previous page's first item.
const startIndex = this.pageIndex * this.pageSize;
const previousPageIndex = this.pageIndex;
this.pageIndex = Math.floor(startIndex / pageSize) || 0;
this.pageSize = pageSize;
this._emitPageEvent(previousPageIndex);
}
此方法在Paginator API文档中没有未列出。但是,它在诸如this之类的答案中被引用。
在同一分页器组件中,一种方法定义为私有,并且在IDE中不可用。
private _updateDisplayedPageSizeOptions() {
if (!this._initialized) { return; }
// If no page size is provided, use the first page size option or the default page size.
if (!this.pageSize) {
this._pageSize = this.pageSizeOptions.length != 0 ?
this.pageSizeOptions[0] :
DEFAULT_PAGE_SIZE;
}
在AOT中,编译成功后会出错。
i「wdm」:编译成功。
ERROR in src/app/models/models.component.ts(153,22):
错误TS2341:属性“ _updateDisplayedPageSizeOptions”是私有的 并且只能在“ MatPaginator”类中访问。
我了解_
的约定是Java语言中的私有方法,没有直接私有方法的概念。只需要更多信息:
_
开头的方法与常规方法有什么区别?_
?如果是私有方法,为什么不将其标记为私有?这是矛盾之处还是我在这里丢失了?答案 0 :(得分:0)
是-下划线前缀是专用成员的通用编程约定。任何不属于公共API的内容都可能会在将来的版本(甚至是下一个版本)中更改或删除,因此并不可靠。公开的API更改至少应服从语义版本控制规则,并显示在更改日志中。
具有下划线前缀的函数与没有下划线前缀的函数之间没有区别。所关心的是组件及其功能等的预期用途,下划线用于标识不打算在组件外部使用的成员。
答案 1 :(得分:0)
如果您的问题是:“我应该在代码中做同样的事情吗?”然后不,使用private changePageSize(){...}
-如果您担心安全性,请TypeScript帮助您,这就是它的目的。
如果您想了解约定,那么不建议使用此函数,因为API无法保证以相同的方式工作,甚至在将来的更新中都存在。