具有不同 CSS 的 Angular2 组件实例
Angular2 Component Instances with different CSS
我有一个带有组件的 Angular2 应用程序,我想在同一页面上多次使用其中的一些组件。我最初有三个组件,但本着重构的精神,我想将一些功能合并为一个。
组件的基本HTML如下:
<div class="component-class componentA-main" >
<div class="result componentA">
<div class="canvasContainer">
... common component functionality here ...
<canvas id="canvas_container"></canvas>
</div>
<div class="componentA-results">
... common component functionality here ...
</div>
</div>
其他两个组件具有相同的 structure/functionality 只是 CSS 不同。每个组件也有自己的 CSS 文件。
组件将按以下方式使用:
<div>
<component id="ComponentA"></component>
<component id="ComponentB"></component>
<component id="ComponentC"></component>
</div>
现在我的想法是将任何特定组件 CSS 类 重命名为通用名称,并具有三个不同的组件 CSS 文件(componentA.css、componentB.css, 等等)
但是我不确定如何使组件的每个实例都使用正确的 css。我唯一想到的是:
<component id="ComponentA" [css-main]='???' [css-result]='???'></component>
然而,使用 @Input 会变得一团糟,我认为无论如何都不应该将其用于样式设置。
是否有 correct/better 方法可以做到这一点,或者最好的做法是我对一个组件的期望过高并坚持使用 3 个单独的组件?
谢谢
我仍然不确定用法,但这是我根据您的要求提出的建议。那就是使用 'styleUrls' 参数并在这些样式文件中拆分您的样式。
这是我的例子:
组件:
@Component({
selector: 'my-component',
templateUrl: 'my-component.component.html',
styleUrls: ['my-component_A.component.css','my-component_B.component.css']
})
...
你html:
<my-component id="component_A"></my-component>
<my-component id="component_B"></my-component>
你css.
我的-component_A.component.css
:host
#component_A
background: red;
我的-component_B.component.css
:host
#component_B
background: green;
虽然您可以使用 ngClass
和 style
属性做类似的事情。
我有一个带有组件的 Angular2 应用程序,我想在同一页面上多次使用其中的一些组件。我最初有三个组件,但本着重构的精神,我想将一些功能合并为一个。
组件的基本HTML如下:
<div class="component-class componentA-main" >
<div class="result componentA">
<div class="canvasContainer">
... common component functionality here ...
<canvas id="canvas_container"></canvas>
</div>
<div class="componentA-results">
... common component functionality here ...
</div>
</div>
其他两个组件具有相同的 structure/functionality 只是 CSS 不同。每个组件也有自己的 CSS 文件。
组件将按以下方式使用:
<div>
<component id="ComponentA"></component>
<component id="ComponentB"></component>
<component id="ComponentC"></component>
</div>
现在我的想法是将任何特定组件 CSS 类 重命名为通用名称,并具有三个不同的组件 CSS 文件(componentA.css、componentB.css, 等等)
但是我不确定如何使组件的每个实例都使用正确的 css。我唯一想到的是:
<component id="ComponentA" [css-main]='???' [css-result]='???'></component>
然而,使用 @Input 会变得一团糟,我认为无论如何都不应该将其用于样式设置。
是否有 correct/better 方法可以做到这一点,或者最好的做法是我对一个组件的期望过高并坚持使用 3 个单独的组件?
谢谢
我仍然不确定用法,但这是我根据您的要求提出的建议。那就是使用 'styleUrls' 参数并在这些样式文件中拆分您的样式。
这是我的例子:
组件:
@Component({
selector: 'my-component',
templateUrl: 'my-component.component.html',
styleUrls: ['my-component_A.component.css','my-component_B.component.css']
})
...
你html:
<my-component id="component_A"></my-component>
<my-component id="component_B"></my-component>
你css.
我的-component_A.component.css
:host
#component_A
background: red;
我的-component_B.component.css
:host
#component_B
background: green;
虽然您可以使用 ngClass
和 style
属性做类似的事情。