【问题标题】:Angular 5+ Material Autocomplete with wrong positionAngular 5+ Material Autocomplete 位置错误
【发布时间】:2018-07-05 23:16:07
【问题描述】:

我正在尝试执行 Angular Material 网站中提供的 example 自动完成功能,当我在应用程序中实现它时,选项出现在其他地方,而不是在输入下方,如图所示

我目前在html文件

中有以下代码
<form class="example-form">
    <mat-form-field class="example-full-width">
      <input matInput placeholder="State" aria-label="State" 
       [matAutocomplete]="auto" [formControl]="stateCtrl">
      <mat-autocomplete #auto="matAutocomplete">
        <mat-option *ngFor="let state of filteredStates | async" 
          [value]="state.name">
          <img class="example-option-img" aria-hidden [src]="state.flag" 
            height="25">
          <span>{{state.name}}</span> |
          <small>Population: {{state.population}}</small>
        </mat-option>
      </mat-autocomplete>
    </mat-form-field>
</form>

这就是我在 component.ts 文件中的内容

import { FormControl } from '@angular/forms';
import { Observable } from 'rxjs';
import { map, startWith } from 'rxjs/operators';

  stateCtrl = new FormControl();
  filteredStates: Observable < State[] >;

  states: State[] = [
    {
      name: 'Arkansas',
      population: '2.978M',
      // https://commons.wikimedia.org/wiki/File:Flag_of_Arkansas.svg
      flag: 'https://upload.wikimedia.org/wikipedia/commons/9/9d/Flag_of_Arkansas.svg'
    }, {
      name: 'California',
      population: '39.14M',
      // https://commons.wikimedia.org/wiki/File:Flag_of_California.svg
      flag: 'https://upload.wikimedia.org/wikipedia/commons/0/01/Flag_of_California.svg'
    }, {
      name: 'Florida',
      population: '20.27M',
      // https://commons.wikimedia.org/wiki/File:Flag_of_Florida.svg
      flag: 'https://upload.wikimedia.org/wikipedia/commons/f/f7/Flag_of_Florida.svg'
    }, {
      name: 'Texas',
      population: '27.47M',
      // https://commons.wikimedia.org/wiki/File:Flag_of_Texas.svg
      flag: 'https://upload.wikimedia.org/wikipedia/commons/f/f7/Flag_of_Texas.svg'
    }
  ];

  constructor() {
    this.filteredStates = this.stateCtrl.valueChanges.pipe(startWith(''),
      map(state => state ? this._filterStates(state) : this.states.slice()));
  }

  private _filterStates(value: string): State[] {
    const filterValue = value.toLowerCase();
    return this.states.filter(state => state.name.toLowerCase().indexOf(filterValue) === 0);
}

在我的 app.module.ts 中,我在导入中有 formsmodulereactiveformsmodule

任何想法为什么选项没有出现在输入下以及如何解决问题将不胜感激。

忘记加了,这个子组件(自动补全)被父组件调用如下。

<div>
...
  <app-menu></app-menu>
...
</div>

【问题讨论】:

    标签: angular angular-material2


    【解决方案1】:

    修复它,我错过了 angular material 提供的预建主题。如果有人遇到同样的问题,只需添加

    @import "~@angular/material/prebuilt-themes/indigo-pink.css";
    

    到styles.css

    【讨论】:

    • 输入框下方仍然没有得到准确的信息! (我是前端新手)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 2021-02-22
    • 2017-05-10
    • 2017-07-07
    • 2020-10-26
    • 1970-01-01
    相关资源
    最近更新 更多