如何在角度4自动完成材料

时间:2017-07-22 17:42:45

标签: angular angular-material2

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();
 }
}

这不是完整的代码,但想法是在方法中调用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();
 }
}

1 个答案:

答案 0 :(得分:16)

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

所以

<强>模板

<input #autoCompleteInput type="text" [matAutocomplete]="auto"/>

<强>组件

@ViewChild('autoCompleteInput', { read: MatAutocompleteTrigger }) 
autoComplete: MatAutocompleteTrigger;

以下是演示此方法的Plunker Example