2016-07-26 10 views
1

Ich habe kürzlich eckig-2-Version von Beta-17 auf RC4 aktualisiert.Fehler in Angular2 - Kein Wert Accessor ''

Ich habe die Lösung der Frage, No value accessor for '' angular2 gesehen.

Meine Frage bezieht sich auf die Antwort dieser Frage.

Ich habe meine boot.ts aktualisiert mit

import { bootstrap } from '@angular/platform-browser-dynamic'; 
import { provide, enableProdMode, PLATFORM_DIRECTIVES } from '@angular/core'; 
import { LocationStrategy, HashLocationStrategy } from '@angular/common'; 
import { HTTP_PROVIDERS, Http } from '@angular/http'; 
import {disableDeprecatedForms, provideForms} from '@angular/forms'; 

import { AppComponent } from './app.component'; 
import { APP_ROUTER_PROVIDERS} from './app.routes'; 

var injectables = [ 
    provideForms(), 
    disableDeprecatedForms(), 
    APP_ROUTER_PROVIDERS, 
    provide(LocationStrategy, { useClass: HashLocationStrategy }), 
    HTTP_PROVIDERS,  
]; 

bootstrap(AppComponent, injectables) 
    .then(null, console.error.bind(console)); 

ich noch Fehler für den Wert Accessor bin vor, Fehler wie folgt

platform-browser.umd.js:1900 Error: No value accessor for '' 
    at new BaseException (forms.umd.js:599) 
    at _throwError (forms.umd.js:1569) 
    at setUpControl (forms.umd.js:1546) 
    at NgModel._setUpStandalone (forms.umd.js:2349) 
    at NgModel._setUpControl (forms.umd.js:2341) 
    at NgModel.ngOnChanges (forms.umd.js:2300) 
    at DebugAppView._View_ProjectDetailComponent1.detectChangesInternal (ProjectDetailComponent.template.js:1176) 
    at DebugAppView.AppView.detectChanges (core.umd.js:12143) 
    at DebugAppView.detectChanges (core.umd.js:12247) 
    at DebugAppView.AppView.detectContentChildrenChanges (core.umd.js:12161) 

Aus Fehler kann ich ableiten, dass seine Winkel mit/Formen nicht eckig/Allgemein.

My Component Defination ist wie folgt,

import {Component, Injector, OnInit, OnDestroy} from '@angular/core'; 
import {FORM_DIRECTIVES} from '@angular/common'; 
import {Subscription} from 'rxjs/Rx'; 
import {ProjectComponent} from '../../../project.component'; 

import { Calendar, InputText, InputTextarea, Checkbox, DataTable, Column, Dropdown } from 'primeng/primeng'; 


@Component({ 
    selector: 'projectDetail', 
    directives: [Calendar, InputText, InputTextarea, Checkbox, DataTable, Column, Dropdown, FORM_DIRECTIVES], 
    templateUrl: 'template/project/details/project' 
}) 

Meine Komponente Vorlage:

<input type="text" class="form-control" name="ProjectNo" [(ngModel)]="ProjectNo" /> 
     <input type="text" pInputText class="form-control" name="ProjectText" [(ngModel)]="Text" /> 
     <textarea pInputTextarea class="form-control" name="ProjectAdditionalText"></textarea> 
     <input type="text" pInputText class="form-control" name="Phase" [(ngModel)]="Phase" /> 

     <p-calendar [readonlyInput]="true" monthNavigator="true" yearNavigator="true" placeholder="Pick a date" name="PlannedStartDate" [(ngModel)]="PlannedStartDate"></p-calendar> 

     <p-checkbox name="BackwardPlanning" [(ngModel)]="BackwardPlanning"></p-checkbox> 

Ist es falsch zu benutzen?

importieren {FORM_DIRECTIVES} aus '@ angular/common';

[Bearbeiten] - Nach @ Harry Vorschlag, ich

Import {REACTIVE_FORM_DIRECTIVES} von '@ Winkel/forms' verwendet haben;

Aber es führt mich zu einem anderen Fehler wie folgt

platform-browser.umd.js:1900 ORIGINAL EXCEPTION: No provider for NgModel! 

platform-browser.umd.js:1900 Error: DI Exception 
    at NoProviderError.BaseException [as constructor] (core.umd.js:4412) 
    at NoProviderError.AbstractProviderError [as constructor] (core.umd.js:4529) 
    at new NoProviderError (core.umd.js:4565) 
    at ReflectiveInjector_._throwOrNull (core.umd.js:6461) 
    at ReflectiveInjector_._getByKeyDefault (core.umd.js:6489) 
    at ReflectiveInjector_._getByKey (core.umd.js:6452) 
    at ReflectiveInjector_.get (core.umd.js:6261) 
    at ElementInjector.get (core.umd.js:11873) 
    at ElementInjector.get (core.umd.js:11873) 
    at ReflectiveInjector_._getByKeyDefault (core.umd.js:6486) 

Bitte helfen.

+0

Ich denke, es der Fall ist. Sie können auch das Formular so ändern, dass 'REACTIVE_FORM_DIRECTIVES' aus' @ angular/forms' verwendet wird. –

+0

@HarryNinh: Ich habe die Frage nach Ihrem Kommentar bearbeitet. Sie können einen weiteren Fehler für NgModel Now sehen. Für mich ist noch unklar, warum plötzlich NgModel nicht gefunden wird. – Jeet

+0

Ich denke, Sie sollten zu FORM_DIRECTIVES zurückkehren. Ich denke, das Problem besteht darin, dass Sie jetzt allen Ihren Eingaben, die [(ngModel)] haben, Namensattribute hinzufügen müssen. Das neue Formularmodell erfordert es. –

Antwort

2

Nach der Suche nach allen möglichen Antworten. Ich benutze am Ende

importieren Sie {REACTIVE_FORM_DIRECTIVES} aus '@ angular/forms';

Dies hat mein Problem gelöst und jetzt funktioniert PrimeNG Component auch mit NgModel-Bindung.

Ich hoffe, dies hilft jedem anderen, der ein ähnliches Problem hat.

Grüße, Jeet