我試圖用@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