私は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
に追加されました。しかし、 'ngValue'を使用しようとすると、ディレクトリが見つからないというエラーが表示されます。私はそれを 'directives'キーに追加してインポートしようとしましたが、IDEは' NgClass'が 'angle2/common'で利用できるとは思われません。私のIDEだけではないように思えます。ランタイムエラーも出てくるからです。私はここに何かを逃していますかおそらくそれはどこか別の場所にありますか?ありがとう! :-) – Andy0708
https://plnkr.co/edit/DgEkNh?p=preview –
ありがとう、私は私のビルドで間違いを犯したことが判明しました。しかし、Plunkerと私のコードの両方で、渡された値は文字列であり、私が望んでいたオブジェクトではありません。どんな考え? – Andy0708