举例说明,我正在开发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是有用的。 –