angular - 如何在 mat-select 中使用 'overlayDir' 指令?

标签 angular typescript angular-material

我想根据其覆盖位置设置 mat-select-panel 的样式,因此 mat-select 提供了 overlayDir: CdkConnectedOverlay属性。

CdkConnectedOverlay提供属性(property)@Output() positionChange: EventEmitter<ConnectedOverlayPositionChange>但我似乎无法解决。

这是文档的链接:https://material.angular.io/cdk/overlay/api#CdkConnectedOverlay

 <mat-form-field>
      <mat-label>Favorite food</mat-label>
      <mat-select disableOptionCentering panelClass="select-panel-class" overlayDir (attach)="test($event)" (backdropClick)="test($event)" (positionChange)="test($event)">
        <mat-option value="food.value1">
          value1
        </mat-option>
        <mat-option value="food.value2">
          value2
        </mat-option>
        <mat-option value="food.value3">
          value3
        </mat-option>
      </mat-select>
 </mat-form-field>

----------------ts-----------------

 test(evt){
    console.log(evt)
  }

它应该控制台记录“backdropClick”、“attach”和“positionChange”事件,但它不显示任何内容,也不显示任何错误。 我使用正确吗?如果没有请解释如何使用它。

最佳答案

根据Angular Material's documentation , overlayDir 不是指令,而是 mat-select 组件内的属性。因此,您应该使用 ViewChild 装饰器获取mat-select组件,然后获取overlayDir属性,最后订阅backdropClick事件发射器。请看这个stackblitz example .

关于angular - 如何在 mat-select 中使用 'overlayDir' 指令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57688963/

相关文章:

angular - 如果有任何更改,如何在离开 Angular 4 页面时提示用户?

javascript - IONIC2 - ionic 服务时出现语法错误

javascript - Angular Material 布局演示无法正常工作

typescript - Typescript 不应该选择最具体的函数实现吗?

angular - 保持按钮禁用,直到用户到达 Angular Material 对话框中文本段落的末尾

angular - Material Angular 卡片展示

javascript - 在 Angular 2 中,如何在某些组件中隐藏侧导航栏

Angular2 ..使用相同的组件根据服务响应/重用组件在同一页面上显示不同的数据

angular - Angular Material 6 中的 CustomeDateAdapter

Typescript - 为什么没有相应地强制实现接口(interface)