在 Angular 11 中,node_modules@angular\material\select 中有一个变量:
/**
* Overlay pane containing the options.
* @deprecated To be turned into a private API.
* @breaking-change 10.0.0
* @docs-private
*/
overlayDir: CdkConnectedOverlay;
在 Angular 12 中现在已更改为:
/** Overlay pane containing the options. */
protected _overlayDir: CdkConnectedOverlay;
这当然打破了我所有的用法overlayDir
例如:
let selectionOverlay = this.quickFiltersSelect
.overlayDir as CdkConnectedOverlay;
给我 TS 错误:Property 'overlayDir' does not exist on type 'MatSelect'
...这是有道理的。现在它受到保护。所以我将 .overlayDir 更改为 ._overlayDir 现在收到 TS 错误:
Property '_overlayDir' is protected and only accessible within class '_MatSelectBase<C>' and its subclasses.
然后我导入了 _MatSelectBase 但我不确定用什么替换它,或者我是否应该以这种方式访问受保护的属性。我认为_MatSelectBase
是一个泛型,所以它正在寻找_MatSelectBase<C>
但我不再确定我是否走在正确的道路上。
谁能告诉我哪里出了问题,以及解决方案是什么?
谢谢。
以下是官方回应:
https://github.com/angular/components/issues/23625 https://github.com/angular/components/issues/23625
“我们不再将下拉菜单放置在选择顶部。您可以尝试基于 MDC 样式顶部的新选择。API 和行为完全相同,因为它与当前选择共享相同的基类,但是CSS 会略有不同,并且下拉菜单仅位于上方/下方。您可以通过从 @angular/material-experimental/mdc-select 而不是 @angular/material/select 导入 MatSelectModule 来尝试。”
所以,答案是,使用实际的选择组件没有答案。现在,如果我们不希望选项位于选择的顶部,则必须使用实验组件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)