私は@ViewChildを使用して、子MdButtonコンポーネントの制御を取るしようとしている:子コンポーネント(md-button)の角度コンポーネントコードを制御できますか?
// In my component:
@ViewChild('add') private _add: MdButton;
@ViewChild('upload') private _upload: MdButton;
@ViewChild('del') private _del: MdButton;
...
public btnClick = (e) => { console.log(e) }
今、私はそれらのいずれかがクリックされたかを調べるためにしようとしている:
/* In template: */
<button md-button #del (click)="btnClick($event)">Delete</button>
<button md-button #change (click)="btnClick($event)">Change</button
<button md-button #show (click)="btnClick($event)">Show</button>
問題があることですボタンのどれがbeacouse #del、#showなどをクリックしたかわかりません。レンダリング後に小道具が消えてしまいましたが、実際にはid属性などを追加したくありません。 DOMを処理せずにコンポーネントクラスコード内のボタンを聴く方法はありますか?
UPDATE
私は素敵な解決策を見つけるdid'tし、これで終わった:
<button md-raised-button #del (click)="_click.next('del')">Delete</button>
<button md-raised-button #add (click)="_click.next('add')">Add</button>
と
...
@ViewChild('del') private _del: MdButton;
@ViewChild('add') private _add: MdButton;
private _click = new Subject();
public clicked$ : Observable<any> = this._click.asObservable();
...
this.clicked$.subscribe(x=>console.log(`Button #${x} is clicked`));
異なるボタンを呼び出す方法が異なるのはなぜですか? – jonrsharpe
そうですね、これはうまくいくでしょう)しかし、多くのボタンがあるとどうなりますか?それは私の素敵なコンポーネントのメソッドを混乱させるでしょう... –
次に、これらのボタンを*別のものを実行したくないのですか?* – jonrsharpe