【问题标题】:Material2 cdk Scrollable never initializedMaterial2 cdk 可滚动从未初始化
【发布时间】:2018-04-07 15:05:44
【问题描述】:

我正在尝试使用新的 API 来监听 Material2 中的滚动事件。 我在我的 app.module.ts 中导入了 ScrollDispatchModule 并使用 cdkScrollable 指令注释了一个容器,如

<div cdkScrollable>
   <div class="my-content">
   ...
   </div>
   <footer class="my-footer">
   ...
   </footer>
</div>

我想使用 ViewChild 在组件中访问它并订阅这样的事件,但可滚动变量始终未定义:

  @ViewChild(Scrollable) scrollable: Scrollable; 

  ngAfterViewInit() {
     this.scrollable.elementScrolled().subscribe(scrolled => {
         //do stuff
     });
  }

我是否以正确的方式使用这些 API?

【问题讨论】:

  • 如果您使用的是快照版本,@Pankaj Parkar 的回答是正确的。如果您使用的是 beta.12,那么您编写的内容应该可以工作。检查这个example
  • 由于某种原因现在它可以工作了,不要问我为什么......也许我同时解决了一些其他明显不相关的错误。我仍然得到 scrollable.getElementRef() 返回的 undefined,我用来获取 div 的引用,但还是使用 Event 目标得到了它。

标签: angular angular-material2 angular-cdk


【解决方案1】:

Scrollable 指令已移出到@angular/cdk 模块。从那时起,尽管Scrollable 类,你应该使用CdkScrollable

@ViewChild(CdkScrollable) scrollable: CdkScrollable; 

【讨论】:

  • 指令名称是 Scrollable 所以我不相信这会起作用
  • @WillHowell 我检查了 Angular Material API,check here
  • 啊,我在看文档站点,它自上次发布以来已更新。如果您更新答案以澄清,您会得到我的 +1。
  • @WillHowell 谢谢,我编辑了答案。如果您愿意,请随时添加。我会接受编辑:)
  • 谢谢,我使用的是 beta.12,所以类名仍然是可滚动的。
猜你喜欢
  • 1970-01-01
  • 2016-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-12
  • 1970-01-01
相关资源
最近更新 更多