J'essaie d'utiliser Angular Material Autocomplétion dans mon projet Angular 2. J'ai ajouté ce qui suit à mon modèle.
<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>
Voici mon composant.
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;
}
}
J'obtiens l'erreur suivante. Il semble que le formControl
n'est pas trouvée.
Impossible de se lier à 'formControl' car ce n'est pas une propriété connue de 'input'.
Quel est le problème ici ?
15 votes
Un commentaire à la réponse de Pengyy : En utilisant
formControl
vous devez importerReactiveFormsModule
à votre module pas module racine . Au cas où vous utiliseriezFormControl
dans vos modules de fonctionnalités.1 votes
J'ai un cas similaire et j'ai l'importation pour ReactiveFormsModule dans ma fonctionnalité. La seule différence est que je voudrais me lier à 'formControlName' au lieu de 'formControl'. Le message a la même structure
1 votes
Les réponses ici sont correctes ; mais si quelqu'un est toujours bloqué (comme je l'étais) et que l'erreur indique
formcontrol
(en minuscules) plutôt queformControl
- si vous exécutez les modèles via le chargeur html de webpack, cela vous aidera : stackoverflow.com/a/40626329/287568