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();
}
}
答案 0 :(得分:16)
如果您未指定ElementRef
选项,默认情况下,Angular会从html元素读取read
。
所以
<强>模板强>
<input #autoCompleteInput type="text" [matAutocomplete]="auto"/>
<强>组件强>
@ViewChild('autoCompleteInput', { read: MatAutocompleteTrigger })
autoComplete: MatAutocompleteTrigger;
以下是演示此方法的Plunker Example。