繁体   English   中英

如何在angular-material2中创建自动完成?

[英]How do I create an autocomplete in angular-material2?

我试图从angular-material2做一个自动完成,但我在Visual Studio代码中得到以下错误:

没有NgControl的提供者

以下是我的代码:

myForm.component.html

<form #form="ngForm" (ngSubmit)="getEditContactForm(form.value)" ngNativeValidate>

    <div fxLayout="column" fxLayoutGap="8px">

        <md-input-container> 
            <input mdInput placeholder="State" [mdAutocomplete]="auto" [formControl]="stateCtrl">
        </md-input-container> 
        <md-autocomplete #auto="mdAutocomplete">
            <md-option *ngFor="let state of filteredStates | async" [value]="state">
              {{ state }}
            </md-option>
        </md-autocomplete>
        <md-input-container class="example-full-width">
            <input mdInput ngModel name="country" placeholder="Χώρα" required>
        </md-input-container> 
    </div>
    <md-dialog-actions align="center" style="margin-top:50px;">
        <div fxLayout="row" fxLayoutGap="10px">
            <button md-button type="button" (click)="sidenavInside.close()">Cancel</button>
            <button md-raised-button color="primary">Save</button>
        </div>
    </md-dialog-actions>
</form>

myForm.component.ts

import { Component, OnInit } from '@angular/core';
import {FormControl, FormsModule, FormGroup } from '@angular/forms';
import 'rxjs/add/operator/startWith';


@Component({
  selector: 'app-admin-contact-form',
  templateUrl: './admin-contact-form.component.html',
  styleUrls: ['./admin-contact-form.component.css'],
})
export class AdminContactFormComponent implements OnInit {

  inputValue: any;

  stateCtrl: FormControl;
  filteredStates: any;

  states = [
    'Alabama',
    'Alaska',
    'Arizona',
    'Arkansas',
    'California',
    'Colorado',
  ];


  constructor() {

    this.stateCtrl = new FormControl();
    this.filteredStates = this.stateCtrl.valueChanges
        .startWith(null)
        .map(name => this.filterStates(name));

  } 

  filterStates(val: string) {
    return val ? this.states.filter(s => new RegExp(`^${val}`, 'gi').test(s))
               : this.states;
  }

  getEditContactForm(v){
    console.log(v);
  }

  ngOnInit() {
  }

}

有人可以帮我找到我是如何得到这个错误的吗?

谢谢。

当您使用model-driven表单时,您必须在AppModule导入ReactiveFormsModule

 imports { ReactiveFormsModule } from '@angular/forms';

@NgModule({
     imports: [
         ReactiveFormsModule,
     ],
     ....
 })
 export class AppModule {


 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM