2016-07-05 21 views
12

Eksperymentuję z formularzami w Angular 2 RC4. To wszystko działa poprawnie, ale kiedy uruchomić aplikację konsoli przeglądarka daje mi tę wiadomość:Formularze w Angular 2 RC4

*It looks like you're using the old forms module. This will be opt-in in the next RC, and will eventually be removed in favor of the new forms module. 

Odpowiednia część mojego komponentu wygląda następująco:

import { 
    FORM_DIRECTIVES, 
    REACTIVE_FORM_DIRECTIVES, 
    FormBuilder, 
    FormGroup 
} from '@angular/forms'; 
import {Observable} from "rxjs/Rx"; 

@Component 
({ 
    selector: "hh-topbar", 
    moduleId: module.id, 
    templateUrl: "topBar.component.html", 
    directives: [HHPagerComponent, FORM_DIRECTIVES, REACTIVE_FORM_DIRECTIVES] 
}) 

export class HHTopBarComponent implements OnChanges, OnInit 
{ 
    ... 
    private filterForm: FormGroup; 
    private title$: Observable<string>; 

    constructor(private formBuilder: FormBuilder) 
    { 
    } 

    public ngOnInit(): any 
    { 
     this.filterForm = this.formBuilder.group 
     ({ 
      "title": [this.info.filters.searchFileName] 
     }); 

     this.title$ = this.filterForm.controls["title"].valueChanges; 
     this.title$.subscribe(val => 
     { 
      this.info.filters.searchFileName = val; 
      this.filterChanged.emit(this.info.filters); 
     }); 
    } 
} 

I odpowiedniej części mojego szablonu wygląda następująco:

<form [formGroup]="filterForm"> 
    <div> 
     <label for="title">Title</label> 
     <input [formControl]="filterForm.controls['title']" id="title" /> 
    </div> 
</form> 

Czy ktoś tu wie, co jest nowe formy moduł ostrzegawczy mówisz i dyrektywami, które będą zmieniać i na co?

+0

Siema korzystania słowa "REACTIVE_FORM_DIRECTIVES" tutaj? –

Odpowiedz

16

Trzeba wyraźnie wyłączyć przestarzałej formy wsparcia podczas uruchamiania się aplikacji:

import {disableDeprecatedForms, provideForms} from '@angular/forms'; 

bootstrap(AppComponent, [ 
    disableDeprecatedForms() 
    provideForms() 
]); 

Zważywszy FormBuilder nie jest przestarzała, można korzystać bezpośrednio z klasy FormGroup Zamiast:

this.filterForm = new FormGroup({ 
    title: new FormControl('', Validators.required) 
}); 
+0

Zrobiłem trik i dziękuję za twoją wskazówkę, jak używać klasy FormGroup bezpośrednio. Bardzo pomocne. O ile wiesz, czy dyrektywy formularzy, których używam, zostaną wprowadzone do pierwszego wydania? – hholtij

+0

Nie ma za co! Używasz odpowiednich dyrektyw ;-) Jeśli to twoje pytanie ... –

+0

Jakiego używa się 'REACTIVE_FORM_DIRECTIVES' tutaj @ThierryTemplier? –