2

多个布局我想为角> = 2不同的布局创建UI组件(像一个datepicker)。例如:一为NG-引导,另一个用于角材质2.一个角2 UI组件

我想在此:

<div *ngIf="template === 1"> Bootstrap </div> 
<div *ngIf="template === 2"> Angular Material </div> 

这不仅是一个丑陋的解决方案,但我不认为它会起作用,因为ng-bootstrap和material2之间会有冲突。

另一种解决方案是创建两个不同的组件:

<my-ng-bootstrap-component> Bootstrap </my-ng-bootstrap-component> 
<my-material2-component> Angular Material </my-material2-component> 

但是这不是我所需要的。因为这对组件的用户来说会非常混乱。

任何想法?

编辑:另外,它应该共享它们之间的一些逻辑。可能继承?

在此先感谢

+0

听起来也许一个[attribute指令(https://angular.io/docs/ts/latest/guide/attribute-directives.html)简单地应用每个样式框架可能需要的类/组件/函数。然后,这个实现将是很好的和可读的''或''。 – filoxo

+0

@filoxo你可以添加一个模板到属性指令? – Alex

+0

不需要。将指令看作是无模板组件。但它可以用来动态创建一个可以传回主机的组件。我见过的一个很好的例子是[Angular Material tooltip](https://github.com/angular/material2/blob/master/src/lib/tooltip/tooltip.ts)。如果这看起来太困难或不必要,上面可能只是组件上的@ @输入。 – filoxo

回答

0

最佳答案从@filoxo但他删除了他的答案

复制从他的评论:

听起来也许一个属性指令简单地套用类/组件/每个样式框架可能需要的功能。然后执行将是很好,可读性<ui-component material></ui-component><ui-component bootstrap></ui-component>