StackOverflow的大家好!
我的代码遇到了一些麻烦。如您所见,我希望能够调用具有设置宽度(引导格式)的行,因为我不想每次都输入类。
所以我想到了以下方法:
import { Component, Input } from '@angular/core';
@Component({
moduleId: module.id,
selector: 'content',
template: ` <div class="row">
<div [ngClass]="contentClass"
id="content"
[ngStyle]="{ 'color': 'black', 'font-size': '20px' }">
<ng-content></ng-content>
</div>
</div>`,
styleUrls: ['content.stylesheet.css']
})
export class ContentComponent {
@Input() rowWidth = "12";
contentClass=(("col-lg-" + this.rowWidth)+(" col-sm-" + this.rowWidth)+(" col-xs-" + this.rowWidth));
}
但是一旦我从另一个组件调用该组件,它就不会按照我想要的方式工作。
<banner bannerHeight="300px"></banner> <!-- This works -->
<content rowWidth="6"></content> <!-- This doesn't -->
如果我用例如
<content [ngStyle]="{'color': 'black'}"></content>
操作成功。指令和导入在父组件中正确设置。
所以这是我的问题:我如何让它以我想要的方式运作?
答案 0 :(得分:4)
它不起作用(你想要的方式,我认为你的意思是contentClass
有rowWidth
12
),因为你对contentClass
的任务在模板实际初始化之前进行。
您必须实施OnInit
并使用ngOnInit
设置contentClass
以及rowWidth
输入的作业:
export class ContentComponent implements OnInit{
@Input() rowWidth = 12;
contentClass:string;
ngOnInit():any {
this.contentClass = (("col-lg-" + this.rowWidth)+(" col-sm-" + this.rowWidth)+(" col-xs-" + this.rowWidth));
}
}
使用<content [rowWidth]="6"></content>
,您的元素将col-lg-6 col-sm-6 col-xs-6
而不是12
设置为其css类。