use Não é possível vincular a 'formControl', pois não é uma propriedade conhecida de 'entrada'-problema de preenchimento automático de material angular2



how to use controlvalueaccessor angular (3)

Eu estou tentando usar o componente autocomplete material angular no meu projeto angular2. Eu adicionei o seguinte ao meu modelo.

<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>

A seguir está meu componente.

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;
    }
}

Estou recebendo o seguinte erro. Parece que a diretiva formControl não está sendo encontrada.

Não é possível vincular a 'formControl', pois não é uma propriedade conhecida de 'entrada'

Qual é o problema aqui?


Answer #1

Ao usar o formControl , você precisa importar o ReactiveFormsModule para o array de imports .

Exemplo:

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

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

Answer #2

Esqueça a tentativa de decifrar o exemplo - como outros já disseram que é incompleto.

Em vez disso, basta clicar no ícone 'pop-out' circulado aqui e você obterá um exemplo StackBlitz totalmente funcional .

Você pode confirmar rapidamente os módulos necessários:

Comente as instâncias de ReactiveFormsModule e, com certeza, você receberá o erro:

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

Answer #3

Comece adicionando um matInput regular ao seu modelo. Vamos supor que você esteja usando a diretriz formControl de ReactiveFormsModule para rastrear o valor da entrada.

Formulários reativos fornecem uma abordagem orientada por modelo para manipular entradas de formulário cujos valores mudam com o tempo. Este guia mostra como criar e atualizar um controle de formulário simples, progredir para usar vários controles em um grupo, validar valores de formulário e implementar formulários mais avançados.

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

...

imports: [
    BrowserModule,
    AppRoutingModule,
    HttpModule,
    FormsModule,
    RouterModule,
    ReactiveFormsModule,
    BrowserAnimationsModule,
    MaterialModule],




angular-forms