1

オプション選択の値を後でロジック用にコンポーネント クラスに戻そうとしています。ただし、ビューでの値をオプションとしてハードコーディングした場合でも、未定義として返されます。[value]="unit"それを渡すと、未定義として返されますonModelChange(unit)。基本的に、フォーム グループ インスタンスに値を与える必要がありますが、そのフィールドの値を取得して別のフィールドのロジックを実行する必要もあります。

新しい求人情報を見る

<div  class="card container form-container">
 <div class="row">
   <div class="col-md-12">
    <form (ngSubmit)="createJobEntry(job_entry)" 
        #jobEntryForm="ngForm">

    <div class="form-group">
      <div class="dropdown" dropdown>
      <label class="label-text" for="material" >Material</label>
        <select class="form-control"
                  (ngModelChange)="onMaterialChange($event)"
                  required
                  id="material"
                  name="material"
                [(ngModel)]="job_entry.material" >
          <option  *ngFor=" let m of materials" [ngValue]="m"> {{ 
                    m.product_name }} 
          </option>
        </select>
      </div>
    </div>

<div class="form-group">
<label class="form-group" for="unit" >Unit</label>
  <select class="form-control" id="unit" name="unit" (onModelChange)="onUnitChange(unit)" [(ngModel)]="job_entry.units">
    <option [value]="cm">centimeters</option>
    <option [value]="inch">inches</option>
  </select>
</div>

クラス

 job_entry : JobEntry = <JobEntry>{};

  ngOnInit() {

this.job_entry = {
  id: null ,
   client: '',
   material: '',
   size_width: 0 ,
   size_height: 0,
   units: '',
   margin: 0,
   runs: 0,
   prints: 0,
   originals: 0,
   per_print: 0,
   discount: 0,
   price: 0
}

  onMaterialChange(material) {
  alert(material.sell_per_sqm)
  }

onUnitChange(unit) {
alert(unit)
}

コンソールでもこれを取得します:

dom_renderer.ts:311 The specified value "undefined" is not a valid 
number. The value must match to the following regular expression: -?
(\d+|\d+\.\d+|\.\d+)([eE][-+]?\d+)?

ここで何が起こっているのか誰でも理解できますか?

4

2 に答える 2