質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Angular

Angularは、JavaScriptフレームワークです。AngularJSの後継であり、TypeScriptベースで実装されています。機能ごとに実装を分けやすく、コードの見通しが良いコンポーネント指向です。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Q&A

解決済

1回答

6523閲覧

angular で選択されたセレクトボックスの行を取得したい。

ayase06

総合スコア13

Angular

Angularは、JavaScriptフレームワークです。AngularJSの後継であり、TypeScriptベースで実装されています。機能ごとに実装を分けやすく、コードの見通しが良いコンポーネント指向です。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

0グッド

0クリップ

投稿2019/03/24 11:34

前提・実現したいこと

angular で選択されたセレクトボックスの値を取得したい。

現在、angularでテーブルの一番上に*ngForでセレクトボックスを表示し数あるテーブルの中から社名と電話番号の行を選択するというものを作っております。

イメージ説明

該当のソースコード

どうしても、どの行で電話番号、社名が選択されていているかをコンポーネント側に渡すことができません。
以下がソースになります。
※テーブルの数や社名などの配置は固定ではありません。その時々で増えたり、減ったりします。

top.component.html

top.component.html

1 2 <table *ngIf="tableData"> 3 4 <tr> 5 <ng-container *ngFor="let row of tableData; index as i"> 6 <td *ngIf="i<nagasa"><select id="department" placeholder="選択してください。"> 7 <option *ngFor="let labels of label" [value]="labels"> 8 {{labels}}</option> 9 </select></td> 10 </ng-container> 11 </tr> 12 13 <tr> 14 <ng-container *ngFor="let row of tableData; index as i"> 15 <td *ngIf="i<nagasa">{{tableData[0][i]}}</td> 16 </ng-container> 17 </tr> 18 19 <tr> 20 <ng-container *ngFor="let row of tableData; index as i"> 21 <td *ngIf="i<nagasa">{{tableData[1][i]}}</td> 22 </ng-container> 23 </tr> 24 25 <tr> 26 <ng-container *ngFor="let row of tableData; index as i"> 27 <td *ngIf="i<nagasa">{{tableData[2][i]}}</td> 28 </ng-container> 29 </tr> 30 31 <tr> 32 <ng-container *ngFor="let row of tableData; index as i"> 33 <td *ngIf="i<nagasa">{{tableData[3][i]}}</td> 34 </ng-container> 35 </tr> 36 37 <tr> 38 <ng-container *ngFor="let row of tableData; index as i"> 39 <td *ngIf="i<nagasa">{{tableData[4][i]}}</td> 40 </ng-container> 41 </tr> 42 43 </table> 44

top.component.ts

top.component.ts

1import { Component, OnInit } from '@angular/core'; 2 3@Component({ 4 selector: 'app-top', 5 templateUrl: './top.component.html', 6 styleUrls: ['./top.component.scss'] 7}) 8export class TopComponent implements OnInit { 9 title: string = "Hello World"; 10 public label: string[] =[ 11 '選択してください。','社名', '電話番号' 12 ]; 13 public nagasa: number = 7; 14 public tableData: string[][] = [[ '株式会社サンプル','代表太郎','2人','東京','090-0000-0000'], 15 [ '株式会社サンプル1','代表太郎1','3人','埼玉','080-0000-0000'], [ '株式会社サンプル2','代表太郎2','10人','千葉','070-0000-0000'], 16 [ '株式会社サンプル3','代表太郎3','11人','栃木','060-0000-0000'],[ '株式会社サンプル4','代表太郎4','15人','群馬','050-0000-0000'], 17 [ '株式会社サンプル5','代表太郎5','1人','新潟','040-0000-0000']] 18 19 constructor() {} 20 ngOnInit() {} 21 22} 23

試したこと

selectboxのnameから行を取得できないかと試みますが、ダメでした。

補足情報(FW/ツールのバージョンなど)

angularは7.1.0を使っております。

宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

selectタグにchangeハンドラを設定する方法があります。

html

1<ng-container *ngFor="let row of tableData; index as i"> 2 <td *ngIf="i<nagasa"><select id="department" placeholder="選択してください。" 3 (change)=onChangeSelect($event.target.value)> 4 <option *ngFor="let labels of label" [value]="labels"> 5 {{labels}}</option> 6 </select></td> 7 </ng-container>

javascript

1public selectValue; 2 3 onChangeSelect(value){ 4 this.selectValue=value; 5 console.log("value is "+this.selectValue); 6 }

投稿2019/03/24 13:39

BlueMoon

総合スコア1339

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ayase06

2019/03/25 02:50

無事にできました。ありがとうございます。引き続き宜しくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問