Bisa't mengikat 'formControl' sejak itu isn't yang diketahui milik 'input' - angular2 bahan Autocomplete masalah

Saya mencoba untuk menggunakan bahan sudut autocomplete komponen dalam angular2 proyek. Saya tambahkan berikut ke template saya.

<md-input-container>
    <input mdInput placeholder="Category" [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>

Berikut adalah komponen saya.

import {Component, OnInit} from "@angular/core";
import {ActivatedRoute, Router} from "@angular/router";
import {FormControl} from "@angular/forms";

@Component({
    templateUrl: './edit_item.component.html',
    styleUrls: ['./edit_item.component.scss']
})
export class EditItemComponent implements OnInit {
    stateCtrl: FormControl;
    states = [....some data....];

    constructor(private route: ActivatedRoute, private router: Router) {
        this.stateCtrl = new FormControl();
        this.filteredStates = this.stateCtrl.valueChanges.startWith(null).map(name => this.filterStates(name));
    }
    ngOnInit(): void {
    }
    filterStates(val: string) {
        return val ? this.states.filter((s) => new RegExp(val, 'gi').test(s)) : this.states;
    }
}

I'm mendapatkan error berikut. Sepertinya formControl direktif tidak ditemukan.

Dapat't mengikat 'formControl' sejak itu isn't yang diketahui milik 'input'

Apa masalah di sini?

Mengomentari pertanyaan (3)
Larutan

Saat menggunakan formControl, anda harus mengimpor ReactiveFormsModule untuk anda impor array.

Contoh:

import {FormsModule, ReactiveFormsModule} from '@angular/forms';

@NgModule({
  imports: [
    BrowserModule,
    FormsModule,
    ReactiveFormsModule,
    MaterialModule,
  ],
  ...
})
export class AppModule {}
Komentar (5)

Jangan lupa mencoba menguraikan contoh .ts - sebagai orang lain telah mengatakan hal ini sering tidak lengkap.

Bukan hanya klik pada 'pop-out' icon yang dilingkari di sini dan anda'll mendapatkan sepenuhnya bekerja StackBlitz contoh.

Anda dapat dengan cepat mengkonfirmasi modul yang diperlukan:

Komentar pun kasus ReactiveFormsModule, dan cukup yakin anda'll mendapatkan error:

Template parse errors:
Can't bind to 'formControl' since it isn't a known property of 'input'. 
Komentar (1)

Mulai dengan menambahkan biasa matInput untuk template anda. Let's asumsikan anda're menggunakan formControl arahan dari ReactiveFormsModule untuk melacak nilai input.

Reaktif bentuk menyediakan model-driven pendekatan untuk penanganan form input dan nilai-nilai yang berubah dari waktu ke waktu. Panduan ini menunjukkan anda bagaimana untuk membuat dan memperbarui bentuk sederhana kontrol, kemajuan untuk menggunakan beberapa kontrol dalam kelompok, memvalidasi bentuk nilai-nilai, dan menerapkan bentuk yang lebih maju.

import { FormsModule, ReactiveFormsModule } from "@angular/forms"; //this to use ngModule

...

imports: [
    BrowserModule,
    AppRoutingModule,
    HttpModule,
    FormsModule,
    RouterModule,
    ReactiveFormsModule,
    BrowserAnimationsModule,
    MaterialModule],
Komentar (0)