Angular/Primeng - 实现无按钮的 p-autocomplete 下拉菜单
Angular/Primeng - Implement p-autocomplete dropdown with no button
我有一个启用了多个条目和下拉菜单的 "p-autocomplete" 元素,我想知道我是否可以在不显示按钮的情况下这样做,而是在用户单击自动完成字段时显示下拉菜单。
这种类型的对象可能吗?
我正在使用 Primeng 4.3.0 版,如果它有所不同的话。
HTML:
<p-autoComplete id="input-country" [multiple]="true" [(ngModel)]="selectedCountries" [dropdown]="true"
[suggestions]="filteredCountries" (completeMethod)="filterCountryMultipe($event)">
<ng-template let-selectedCountries pTemplate="item">
....
</ng-template>
</p-autoComplete>
===================
更新=====================
感谢 olivier-depriester 的回答。除了 onFocus 方法之外,我还删除了下拉列表 属性 并使用自动完成处理所有内容,只需修改 filter 方法以接受空查询。
当前 HTML:
<p-autoComplete id="input-country" [multiple]="true" [(ngModel)]="selectedCountries" (onFocus)="onFocus()"
[suggestions]="filteredCountries" (completeMethod)="filterCountryMultiple($event)" >
<ng-template let-selectedCountries pTemplate="item">
....
</ng-template>
</p-autoComplete>
当前打字稿:
onFocus(){
this.filterCountryMultiple({query:''});
this.autoComplete.show();
}
filterCountryMultiple(event) {
let query = event.query;
this.filteredCountriesMultiple = this.filterCountry(query);
}
filterCountry(query):any[] {
....
for(let i = 0; i < countries.length; i++) {
let country = countries[i];
if(...query is empty...){
filtered.push(country.code);
}
else if(...match found...) {
filtered.push(country.code);
}
}
return filtered;
}
对于 primeng 6.5 到 7.0,我使用了 show
函数,绑定在 focus
事件上。
在打字稿方面:
export class MyComponent {
@ViewChild(AutoComplete) private autoComplete: AutoComplete;
onFocus() {
this.autoComplete.show();
}
}
HTML 一侧:
<p-autoComplete id="input-country" [multiple]="true" [(ngModel)]="selectedCountries" [dropdown]="true"
[suggestions]="filteredCountries"
(completeMethod)="filterCountry($event)"
(onFocus)="onFocus($event)">
<ng-template let-selectedCountries pTemplate="item">
<div class="ui-helper-clearfix" style="border-bottom:1px solid #D5D5D5">
.......
</ng-template>
</p-autoComplete>
但是在primeng当前版本(v8)中,这个方法已经没有文档了。所以我不知道它是否还存在
我有一个启用了多个条目和下拉菜单的 "p-autocomplete" 元素,我想知道我是否可以在不显示按钮的情况下这样做,而是在用户单击自动完成字段时显示下拉菜单。
这种类型的对象可能吗?
我正在使用 Primeng 4.3.0 版,如果它有所不同的话。
HTML:
<p-autoComplete id="input-country" [multiple]="true" [(ngModel)]="selectedCountries" [dropdown]="true"
[suggestions]="filteredCountries" (completeMethod)="filterCountryMultipe($event)">
<ng-template let-selectedCountries pTemplate="item">
....
</ng-template>
</p-autoComplete>
=================== 更新===================== 感谢 olivier-depriester 的回答。除了 onFocus 方法之外,我还删除了下拉列表 属性 并使用自动完成处理所有内容,只需修改 filter 方法以接受空查询。
当前 HTML:
<p-autoComplete id="input-country" [multiple]="true" [(ngModel)]="selectedCountries" (onFocus)="onFocus()"
[suggestions]="filteredCountries" (completeMethod)="filterCountryMultiple($event)" >
<ng-template let-selectedCountries pTemplate="item">
....
</ng-template>
</p-autoComplete>
当前打字稿:
onFocus(){
this.filterCountryMultiple({query:''});
this.autoComplete.show();
}
filterCountryMultiple(event) {
let query = event.query;
this.filteredCountriesMultiple = this.filterCountry(query);
}
filterCountry(query):any[] {
....
for(let i = 0; i < countries.length; i++) {
let country = countries[i];
if(...query is empty...){
filtered.push(country.code);
}
else if(...match found...) {
filtered.push(country.code);
}
}
return filtered;
}
对于 primeng 6.5 到 7.0,我使用了 show
函数,绑定在 focus
事件上。
在打字稿方面:
export class MyComponent {
@ViewChild(AutoComplete) private autoComplete: AutoComplete;
onFocus() {
this.autoComplete.show();
}
}
HTML 一侧:
<p-autoComplete id="input-country" [multiple]="true" [(ngModel)]="selectedCountries" [dropdown]="true"
[suggestions]="filteredCountries"
(completeMethod)="filterCountry($event)"
(onFocus)="onFocus($event)">
<ng-template let-selectedCountries pTemplate="item">
<div class="ui-helper-clearfix" style="border-bottom:1px solid #D5D5D5">
.......
</ng-template>
</p-autoComplete>
但是在primeng当前版本(v8)中,这个方法已经没有文档了。所以我不知道它是否还存在