舉例說明,我正在開發Angular2中的多選控件,功能類似於Select2或多種其他控件。什麼時候合適?
我首先定義了我希望用戶界面看起來像是在定義下拉列表中包含的內容,並提出了兩個選項。
一種是使用@Input()
S爲選項:
<div class=option" *ngFor="let option of options">{{option.display}}</div>
Ahother是使用transclusion,該是多麼material2出現:
<my-multi-select [options]="options"></my-multi-select>
...然後在模板my-multi-select
內要做到這一點:
<my-multi-select>
<my-option *ngFor="let option of options" [value]="option"></my-option>
</my-multi-select>
...然後該模板my-multi-select
內:
<div class=select-container">
<ng-content select="my-option"></ng-content>
</div>
我含量與transclusion選項,但後來當我開始真正實現它蘭特難易結合來從my-option
到my-multi-select
的事件。我可以嘗試找出一種方法來通知my-select
發生在my-option
中的事情,比如使用Observable
,或者深入挖掘以使用@Output
事件 - 但這就像試圖將一個方形釘塞入圓孔當@Input
變量可能會更簡單。
這引起了我的問題,在這裏甚至是合適的?還有一個更大的問題,什麼時候合適的話,以及什麼時候使用阻塞堵塞一個方形釘到圓孔?
是的,我明白了。但這只是一種選擇,在這種情況下,我有多種選擇可供選擇。換句話說,如果我可以通過使用輸入變量或使用輸入變量來完成同樣的事情,那麼在決定兩種不同的方法之間,我應該考慮哪些關鍵事項? –
我試着澄清一下我的問題。 –
這是一個用於包容的用例,但我不是唯一的用例。一般來說,當你想提供通用的HTML以包含在模板主體中時,transclusion是有用的。 –