こんにちは。
現在、AngularJS2を使ってます。
郵便番号検索から都道府県、市区名、町村名をセットするような画面を作っているのですが。
画面上はうまく値が切り替わっているように見えるのですが、郵便番号検索処理後に「都道府県、市区町村、町域名」の入力欄を操作せずに登録しようとすると、値が取得できていません。
(直接入力すると値がセットされています。)
HTMLSelectElementやHTMLInputElementを使っているせいでこうなっている、或いは画面が正しく表示されていても内部のDOMがRefreshされていないように思うのですが、使い方が間違っているのでしょうか?お聞かせいただければ幸いです。
HTML
1 <tr> 2 <td>郵便番号</td> 3 <td> 4 <input formControlName="zip" type="text" value="" placeholder="1070052" maxlength="7" name="zip" (change)="searchAddress(supplySaveModal, $event.target.value)"> 5 </td> 6 <td>都道府県</td> 7 <td> 8 <select formControlName="prefectureId" name="prefectureId" id="prefectureCtl" (change)="setStations($event.target.value)"> 9 <option value="">都道府県名</option> 10 <option *ngFor="let prefecture of prefectures" [value]="prefecture.id">{{ prefecture.name }}</option> 11 </select> 12 </td> 13 </tr> 14 <tr> 15 <td>市区町村</td> 16 <td><input formControlName="city" id="cityCtl" type="text" value="" placeholder="港区" maxlength="30" name="city"></td> 17 <td>町域名</td> 18 <td><input formControlName="town" id="townCtl" type="text" value="" placeholder="赤坂" maxlength="30" name="town"></td> 19 </tr>
JS
1 searchAddress(modal: NgxSmartModalComponent, post: string) { 2 ... 3 this.addressService.findAll(post).subscribe( 4 (addresses) => { 5 let options = document.querySelectorAll('#prefectureCtl option'); 6 for (var opt, j = 0; opt = options[j]; j++) { 7 if (opt.value == addresses[0].prefecture.id) { 8 (<HTMLSelectElement>document.getElementById("prefectureCtl")).selectedIndex = j; 9 break; 10 } 11 } 12 (<HTMLInputElement>document.getElementById("cityCtl")).value = addresses[0].cityName; 13 (<HTMLInputElement>document.getElementById("townCtl")).value = addresses[0].townName; 14 } 15 ); 16 } 17
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。