2016-06-29 17 views
1

私はrc.1のために構築したアプリケーションをrc.3と新しいフォームモジュールにアップグレードしています。私はそれのbeacuseから私の髪をリッピングしてきたし、誰かが私が間違っているアイデアを持っていたかどうかを確認することを決めた。 Angular2モデル駆動型と事前設定済みの値

は基本的に私はこのような形式(fbはFormBuilderのインスタンスである)を構築しています:

this.form = fb.group({ 
    client_id: ['Customer', Validators.compose([Validators.required, formValidators.mustBeNumber])], 
    data_owner_id: ['Data Owner (if different from Customer)', formValidators.mustBeNumber], 
    order_time: [new Date(), Validators.compose([formValidators.mustBeDate, Validators.required])] 
}) 

をそして、このようngModelを事前入力:

<form class="form" [formGroup]="form" (ngSubmit)="submitJob(f)"> 
     <legend>{{title}}</legend> 
     <div class="form-group"> 
     <label for="client_id">Client</label> 
    <select (change)="clientHasChanged($event.target.value)" class="form-control" id="client_id" formControlName="client_id" [(ngModel)]='job.client_id'> 
       <option value="" disabled selected>Customer</option> 
       <option *ngFor="let client of clients" [ngValue]="client.client_id">{{client.client_id}} - {{client.client_id_name}}</option> 
      </select> 

これは、RCのために完璧にうまくいきました。 1(名前が変更されたディレクティブの外側)、エラーが発生しました:

browser_adapter.ts:74 EXCEPTION: Error in http://localhost:4200/app/+wih2/+job/job.component.html:6:129 ORIGINAL EXCEPTION: No value accessor for ''

Rem ngModelを実行するとエラーが取り除かれますが、データが必要です。これを解決する方法は他にありません。

私は新しいフォームのモジュールを使用していて、はい、私はそれをブートストラップしています:

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

は、いくつかの答えを楽しみにしています!

編集: 全スタックトレースstacktrace

+0

あなたはすべてのエラーを投稿できますか? – maxisam

+0

しかし、私の推測では、 '@ angle/common 'の' import {NgForm}'を忘れています;そして、実際にはngModelに頼る必要はありません。あなたはsubscribeすることができますclient_id – maxisam

+0

私はNgFormをインポートしています。私は明日の朝にstacktrace全体を投稿します。 – yusijs

答えて

1

私はよりよい解決策は、反応溶液を使用していると思います。

あなたngOnInitでこのような何か()

 
this.form.controls["client_id"].valueChanges.subscribe(value => { 
    this.job.client_id = value; 
}); 

そして

+0

これがどのように役立つかわかりませんか?残りのAPIからデータが取得されています。存在する場合は、それらの値が事前計算されます。私が(変更)で使用する関数はうまく動作します。 – yusijs

+0

ああ、実際にリアクティブフォームを使用しているので、ngModelを使用する必要はありません。 – maxisam

+1

私はこれを逆の方法でどのように使うことができるかを見ることができます。 APIからデータを取得し、そこからフォームに値を追加します。それはおそらく動作する可能性があります。私は朝にそれを調べます!今眠る。 :) – yusijs

0

問題は、私が代わりに角度/フォーム@の、共通/角度@からNgModelを輸入していることだったテンプレートに結合性を使用 - 私はwasn NgModelがフォームと非常に密接に結びついていることを認識していません。

関連する問題