订阅CDK滚动策略事件



我正在创建一个生成cdk覆盖的服务。我想做的是找到一种方法来收听cdk滚动策略事件。更具体地说,我想知道 cdk 何时使用"关闭"滚动策略关闭叠加层。最终目标是创建一个可观察量,消费者可以使用它来确定覆盖层是否打开(有条件地应用 css 等等)。

经过一些搜索,看起来 overlayRef 有一个属性_portalOutlet它有一个属性_isDisposed (https://github.com/angular/material2/blob/master/src/cdk/overlay/overlay-ref.ts)。这看起来像我正在寻找的,但当然这些是消费者无法使用的私人财产。

我无法想象 cdk 覆盖层真的没有这样的东西的公共属性,我真的希望有人指出我的无知。顺便说一下,我正在使用角度 5。

找到了!

if (dropdownConfig.scrollStrategy === "close") {
  overlayRef.detachments().subscribe( _ => {
    this.isOpen = false;
    this.isOpenSubject.next(false);
  });
}

希望这有助于一个随机的灵魂。

最新更新