控制角材料的位置 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-calendar
和 mat-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 自动完成选项面板的主要内容,如果未能解决你的问题,请参考以下文章