你如何在角4自动完成材料中调用closePanel

Ric*_*son 14 angular-material2 angular

import { MdAutocomplete } from '@angular/material';

@Component({
 template:'
             <input type="text" [mdAutocomplete]="auto"/>
             <md-autocomplete #auto="mdAutocomplete" #autoComplete>
             <md-option>
               Some Options
             </md-option>
          </md-autocomplete>'
})

export class AutoComplete {
 @ViewChild('autoComplete') autoComplete: MdAutocomplete;

 closeAuto() {
   this.autoComplete.closePanel();
 }
}
Run Code Online (Sandbox Code Playgroud)

它不是完整的代码,但想法是在方法中调用closePanel.closePanel在https://material.angular.io/components/autocomplete/api上列为方法,但无法正常工作.它说找不到方法.

也试过这种方法

import { MdAutocompleteTrigger } from '@angular/material';

@Component({
 template:'
             <input #autoCompleteInput type="text" [mdAutocomplete]="auto"/>
             <md-autocomplete #auto="mdAutocomplete" #autoComplete>
             <md-option>
               Some Options
             </md-option>
          </md-autocomplete>'
})

export class AutoComplete {
 @ViewChild('autoCompleteInput') autoComplete: MdAutocompleteTrigger;

 closeAuto() {
   this.autoComplete.closePanel();
 }
}
Run Code Online (Sandbox Code Playgroud)

yur*_*zui 20

ElementRef如果未指定read选项,则默认情况下从html元素读取Angular .

所以

模板

<input #autoCompleteInput type="text" [matAutocomplete]="auto"/>
Run Code Online (Sandbox Code Playgroud)

零件

@ViewChild('autoCompleteInput', { read: MatAutocompleteTrigger }) 
autoComplete: MatAutocompleteTrigger;
Run Code Online (Sandbox Code Playgroud)

以下是演示此方法的Plunker示例.

  • 好答案。尽管Angular文档提到了此方法,但没有使用该方法的示例。通常,这是Angular文档的常见问题。 (3认同)
  • 如果您使用具有相同标签的多个自动完成功能,请使用“@ViewChildren(MatAutocompleteTrigger) autoComplete: QueryList&lt;MatAutocompleteTrigger&gt;;”并循环它。我使用 **input** 的 **id** 来匹配。`if (this.autoComplete['_results'][i]['_element']['nativeElement']['id'] === _fieldid) {` (2认同)