【问题标题】:How do you call closePanel in angular 4 autoComplete material你如何在 Angular 4 autoComplete 材料中调用 closePanel
【发布时间】:2017-12-28 16:12:41
【问题描述】:
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();
 }
}

【问题讨论】:

标签: angular angular-material2


【解决方案1】:

如果你没有指定read选项,Angular默认从html元素读取ElementRef

所以

模板

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

组件

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

这是演示此方法的Plunker Example

【讨论】:

  • Günter Zöchbauer hereread 属性的解释。基本上,我们强输入一个元素,否则它会显示为ElementRef
  • 请注意 MdAutocompleteTrigger 现在是 MatAutocompleteTrigger。
  • 这也有助于我定位组件以使下拉菜单在焦点上打开:this.autoComplete._onChange(''); this.autoComplete.openPanel();
  • 如果您使用多个具有相同标签的自动完成,请使用 @ViewChildren(MatAutocompleteTrigger) autoComplete: QueryList&lt;MatAutocompleteTrigger&gt;; 并循环它。我使用 inputid 来匹配。 if (this.autoComplete['_results'][i]['_element']['nativeElement']['id'] === _fieldid) {
  • 很好的答案。尽管 Angular 文档提到了这种方法,但没有关于如何使用它的示例。一般来说,这是 Angular 文档的常见问题。
猜你喜欢
  • 2018-04-02
  • 1970-01-01
  • 1970-01-01
  • 2017-12-23
  • 2018-03-08
  • 2018-09-04
  • 1970-01-01
  • 2017-12-10
  • 2019-11-11
相关资源
最近更新 更多