2017-04-05 18 views
83

Tôi đang cố gắng sử dụng vật liệu góc autocomplete thành phần trong dự án angular2 của tôi. Tôi đã thêm vào sau mẫu của tôi.Không thể liên kết với 'formControl' vì nó không phải là tài sản được biết đến của 'đầu vào' - tài liệu góc 2 Tự động hoàn thành

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

Sau đây là thành phần của tôi.

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

Tôi nhận được lỗi sau. Có vẻ như chỉ thị formControl không được tìm thấy.

Không thể liên kết với 'formControl' vì nó không phải là một tài sản của 'đầu vào'

vấn đề ở đây là gì được biết đến?

+1

một bình luận cho câu trả lời Pengyy của: Trong khi sử dụng 'formControl', bạn phải nhập khẩu ' ReactiveFormsModule' vào ** mô-đun của bạn **, không phải * rootModule *. Chỉ trong trường hợp bạn sử dụng 'FormControl' trong các mô-đun tính năng của bạn. –

+0

Tôi có trường hợp tương tự và có nhập khẩu cho ReactiveFormsModule trong tính năng của tôi. Sự khác biệt duy nhất là tôi muốn liên kết với 'formControlName' thay vì 'formControl'. Thông báo có cùng cấu trúc –

Trả lời

184

Trong khi sử dụng formControl, bạn phải nhập ReactiveFormsModule vào số imports array của mình.

dụ:

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

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

Tôi muốn thêm rằng tôi đã gặp phải lỗi này vì vỏ bọc - Tôi đã sử dụng [FormControl] thay vì [formControl] – iJungleBoy

+33

Thực sự, tại sao tài liệu này không có trong tài liệu https: // .angular.io/components/autocomplete/overview quá nhiều thời gian lãng phí cho việc này. Magical phụ thuộc không rõ ở khắp mọi nơi với góc cạnh. – Vadorequest

+0

@Vadorequest: Các tài liệu đó dành cho Tài liệu. Nếu họ bắt đầu thêm tài liệu cho mọi tính năng của Angular mà họ sử dụng, có thể sẽ có rất nhiều sự trùng lặp giữa tài liệu Góc và tài liệu Tài liệu cuối cùng sẽ không đồng bộ. Nhưng tôi đã dành nhiều thời gian để gãi đầu. Bạn luôn có thể gửi một vấn đề cho tài liệu github repo: https://github.com/angular/material2/issues –

5

Quên cố gắng để giải mã .ts dụ - như những người khác đã nói thường là không đầy đủ.

enter image description here

Thay vào đó chỉ cần nhấp vào biểu tượng 'pop-out' vòng ở đây và bạn sẽ nhận được một fully working example.

Và tất nhiên bạn có thể thấy điều này bao gồm các mô-đun yêu cầu bổ sung (nếu không nó sẽ không hoạt động).

enter image description here

Just for fun Tôi nhận xét ra bất kỳ trường hợp của ReactiveFormsModule và chắc chắn đủ lên popped lỗi này:

Template parse errors: 
Can't bind to 'formControl' since it isn't a known property of 'input'. 
Các vấn đề liên quan