2016-04-17 19 views
1

私はselect要素と角2コンポーネントのボタンを持っています。ボタン上でクリックハンドラがあり、ボタンをクリックすると、select要素の値にアクセスしたいと考えています。私は、次のことを試してみました:他の要素のイベントハンドラに選択されたオプションを渡す

import { Component } from 'angular2/core'; 
import { Department } from "../classes/department"; 

@Component({ 
    selector: 'my-component', 
    template: ` 
     <select #s> 
      <option *ngFor="#department of departments" [value]="department">{{ department.id }}</option> 
     </select> 

     <button (click)="removeDepartment(s.value)">Remove</button> 
    ` 
}) 
export class MyComponent { 
    // ... 

    removeDepartment(department: Department) : void { 
     console.log(department); 
     console.log(typeof department); 
    } 
} 

基本的に私はDepartmentオブジェクトの配列を持っている、と私はボタンをクリックしたときに、私はremoveDepartment方法に選択したオプションにバインドされたオブジェクトを渡すためにしようとしています。私がしようとしているように変数sを使用できるかどうかわかりません。その結果、オブジェクトの代わりに文字列[object Object]がメソッドに渡されます。

select要素のchangeイベントで私が欲しいものを達成できることは分かっていますが、私がしなければ、現在選択されている値をコンポーネントに保存したくありません。私は@ViewChildを使用してそれについても行くことができましたが、可能ならば私がやろうとしていることに似た何かをすることを好む。

私がしようとしているように変数を使用して現在選択されている値を渡すことは可能ですか、コンポーネント内に変数を保持して、changeイベントで更新する必要がありますか?

あなたはngValueの代わりvalue使用する必要がある値としてオブジェクトを使用したい場合は、私は角2ベータ15

答えて

0

を使用しています。 valuestringをサポートしており、それに割り当てられた任意の値をstringifies:

<option *ngFor="let department of departments" [ngValue]="department">{{ department.id }}</option> 

これは、私はそれについて少し読んでいるので、私は実際にそれが動作するように取得しようとしていたbeta.14

+0

に追加されました。しかし、 'ngValue'を使用しようとすると、ディレクトリが見つからないというエラーが表示されます。私はそれを 'directives'キーに追加してインポートしようとしましたが、IDEは' NgClass'が 'angle2/common'で利用できるとは思われません。私のIDEだけではないように思えます。ランタイムエラーも出てくるからです。私はここに何かを逃していますかおそらくそれはどこか別の場所にありますか?ありがとう! :-) – Andy0708

+0

https://plnkr.co/edit/DgEkNh?p=preview –

+0

ありがとう、私は私のビルドで間違いを犯したことが判明しました。しかし、Plunkerと私のコードの両方で、渡された値は文字列であり、私が望んでいたオブジェクトではありません。どんな考え? – Andy0708

関連する問題