html - FormControl nu este furnizat de niciunul dintre directivele aplicabile


FormControl întâmpină dificultăți cu directivele...

Încerc să implementez o funcție de completare automată în câmpul meu de input. Folosesc următorul ghid angular-material până în punctul în care am copiat și lipit cuvânt cu cuvânt codul lor typescript și html pentru a-l testa: https://material.angular.io/components/autocomplete/overview.

Continuu să primesc o eroare la FormControl în HTML care spune: „Proprietatea FormControl nu este furnizată de niciun director aplicabil și nici de elementul de intrare. Informații de inspecție: Raportează proprietate, eveniment sau legături directivale structurale nedefinite pe elemente.”

 HTML CODE:

 <form class="example-form">
  <mat-form-field class="example-full-width">
    <input type="text" placeholder="Pick one" aria-label="Number" matInput [FormControl]="myControl" [matAutocomplete]="auto">
    <mat-autocomplete #auto="matAutocomplete">
      <mat-option *ngFor="let option of filteredOptions | async" [value]="option">
        {{option}}
      </mat-option>
    </mat-autocomplete>
  </mat-form-field>
</form>

 TS CODE:

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

 @Component({
   selector: 'mySelector',
   templateUrl: 'myTemplate.html',
   styleUrls: ['myCSS.css'],
 })
 export class myExportClass implements OnInit {
   myControl = new FormControl();
   options: string[] = ['One', 'Two', 'Three'];
   filteredOptions: Observable<string[]>;

   ngOnInit() {
     this.filteredOptions = this.myControl.valueChanges
       .pipe(
         startWith(''),
         map(value => this._filter(value))
       );
   }

   private _filter(value: string): string[] {
     const filterValue = value.toLowerCase();

     return this.options.filter(option => 
 option.toLowerCase().includes(filterValue));
   }
 }

Răspuns #1

Așa cum se menționează în documentație: „Pentru acest exemplu, asigură-te că imporți ReactiveFormsModule din @angular/forms în NgModule-ul tău”

Așadar, asigură-te că app.module conține modulul, de exemplu:

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

import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';

@NgModule({
  declarations: [
    AppComponent,
  ],
  imports: [
    FormsModule,
    ReactiveFormsModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }