gpt4 book ai didi

angular - 保持自动完成建议面板打开以进行多项选择,并在 Angular Material 2 的面板外部单击时关闭

转载 作者:太空狗 更新时间:2023-10-29 17:13:32 24 4
gpt4 key购买 nike

我想修改多选的自动完成组件。我想要的是建议面板应该通过复选框打开以进行多项选择,如果用户在建议面板之外单击则关闭它。根据文档,我们可以通过 panelClosingActions 处理它,但我找不到任何使用方法。

我能够通过 MdAutocompleteTrigger 事件和 openPanel 方法保持面板打开,但如果选择了第二个索引并选择第四个索引,那么第二个索引复选框将取消勾选并再次勾选。

<md-autocomplete #auto="mdAutocomplete" id=autoComplete>
<md-option *ngFor="let state of filteredStates | async"
[value]="state.name" (click)="handleAutocomplete()">
<md-checkbox [checked]="state.selected" [(ngModel)]="state.selected">
<span>{{ state.name }}</span> |
<small>Population: {{state.population}}</small>
</md-checkbox>
</md-option>
</md-autocomplete>

@ViewChild('autocomplete', {read: MdAutoCompleteTrigger})
autoComplete: MdAutocompleteTrigger

handleAutocomplete(){
this.autoComplete.openPanel();
}

非常感谢任何帮助

最佳答案

我遇到了同样的问题。

我找到的唯一解决方案是在使用 mat-autocomplete optionSelected 方法选择选项时立即重新打开选项面板。

HTML

<mat-autocomplete 
#auto="matAutocomplete"
[displayWith]="displayFn"
(optionSelected)="openPanel()">
<mat-option *ngFor="let tag of filteredSources" [value]="tag.id">
<span>{{ tag.text }}</span>
</mat-option>
</mat-autocomplete>

TS

@ViewChild(MatAutocompleteTrigger) autoTrigger: MatAutocompleteTrigger;
openPanel(): void {
const self = this;
setTimeout(function () {
self.autoTrigger.openPanel();
}, 1);
}

这不是一个优雅的解决方案,因为面板仍然关闭并且有闪烁效果,但我找不到更好的解决方案,因为 MatAutocompleteTrigger panelClosingActions 是只读的。

关于angular - 保持自动完成建议面板打开以进行多项选择,并在 Angular Material 2 的面板外部单击时关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46399673/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com