控制角材料的位置 2 自动完成选项面板

Posted

技术标签:

【中文标题】控制角材料的位置 2 自动完成选项面板【英文标题】:Controlling the position of angular material 2 autocomplete options panel 【发布时间】:2017-11-20 05:57:15 【问题描述】:

我正在尝试控制 angular material 2 自动完成选项面板的位置,并将此面板放置在与实际输入的 div 不同的 div 中。

这是我尝试过的:

<div fxLayout="row">
  <div fxFlex="50">
    <form [formGroup]="formStatus.form">
      <div>
        <md-input-container>
          <input mdInput formControlName="title" placeholder="Titre">
        </md-input-container>
      </div>
      <div>
        <md-input-container>
          <input mdInput placeholder="Address" [mdAutocomplete]="auto" formControlName="address">
        </md-input-container>
      </div>
    </form>
  </div>
  <div fxFlex="50" style="background-color: palegreen">
    <!-- options panel should appear here in the palegreen div -->
    <md-autocomplete #auto="mdAutocomplete" [displayWith]="addressFormatter">
      <md-option *ngFor="let address of addresses | async" [value]="address">
         address.description 
      </md-option>
    </md-autocomplete>
  </div>
</div>

但是,选项面板仍然出现在输入的正下方,并且它的位置似乎与输入的位置绑定...

【问题讨论】:

与 Datepicker 相同的问题... 【参考方案1】:

您可以使用以下代码控制 Angular Material 2 自动完成选项面板的位置

::ng-deep .mat-autocomplete-panel
  position: fixed !important;
  top:30% !important;
  left: 40%;
  right: 30%;
  border: 3px solid #73AD21;
  background-color: palegreen !important;
 

【讨论】:

这个答案不完整。请扩展您的答案。【参考方案2】:

只是添加到@ferralucho 和@Nehal 提供的当前解决方案

::ng-deep 正如@ferralucho 所建议的那样,我需要影响父组件类。

我想在离我更远的地方显示我的自动完成选项面板,因为我在输入框周围有一个包装器 div。以下工作:

::ng-deep .mat-autocomplete-panel 
  position: relative;
  top: 30px;

【讨论】:

【参考方案3】:

我不确定这是否完全符合您的要求,但您可以通过操作 mat-calendarmat-autocomplete-panel 的父类来控制它们的位置。这些被覆盖的类需要位于目标组件之上才能生效。

例子:

.mat-autocomplete-panel 
   position: fixed !important;
   top:30% !important;
   left: 40%;
   right: 30%;
   border: 3px solid #73AD21;
   background-color: palegreen !important;

日期选择器demo

自动完成demo

【讨论】:

非常感谢@Nehal 的样品!您确认 CSS 是实现分离的唯一方法吗? 是否有 CSS 方法可以将自动完成面板定位在给定的 div 中,而不是使用相对位置? 嗨@balteo,我还没有找到任何方法来改变 md-autocomplete 的 css 属性而不调整它自己的关联 css 类。这是我能想出的唯一解决方案:( 你好,Nehal。我正在寻找一种方法来扩展组件并使用我自己的模板...

以上是关于控制角材料的位置 2 自动完成选项面板的主要内容,如果未能解决你的问题,请参考以下文章

角材料自动完成不起作用,没有显示错误

角2材料2中的预填充垫自动完成

带有对象代码和描述的角材料自动完成

材料角度自动完成:选择选项后如何在屏幕中保留垫子选项?

如何使用选项组重置材料自动完成中的自定义过滤器

Reactjs - 通过在自动完成组件(材料 UI)中的每个输入更改上点击 API 来更新选项