を@Input()
を使用できますかsがあなたの成分の含有量にスタイルとクラスを適用するように設定するかどうか、あなたは、ホスト要素と[style.xxx]
にスタイルやクラスのバインディングを適用するために@HostBinding()
を使用することができ、[ngStyle]
、[class.xxx]
、および[ngClass]
されています
@Component({
template: `
<button [style.with.px]="smSize ? 250 : 150">click me</button>
<!-- or -->
<button [ngClass]="smSize ? 'big' : 'small'">click me</button>
})
class ButtonCustom {
private _smSize:boolean;
get isSmSize:boolean() {
return this._smSize;
}
@Input()
set smSize(value:any) {
this._smSize = value != 'false'; // treat everything as `true` except `'false'`
}
@HostBinding('style.border-radius')
borderRadius:number = 0;
private _rounded:boolean;
get isRounded:boolean() {
return this._rounded;
}
@Input()
set rounded(value:any) {
this._rounded = value != 'false'; // treat everything as `true` except `'false'`
this.borderRadius = this._rounded ? 3 : 0;
}
}
セッター属性が値なしで設定されているかどうかについての情報を取得する方法です
<btn-custom smSize rounded>
対
<btn-custom smSize="50" rounded="true">
<btn-custom [smSize]="50" [rounded]="true">
申し訳ありませんが、これが動作するのは確かですか? 'cuz私がそれを使用しようとしたときに、私は次のメッセージを受け取りました:"処理されていない約束の拒絶:引用は評価のためにサポートされていません! :;タスク:Promise.then;値:エラー:評価で引用符がサポートされていません!(...)エラー:評価では引用符がサポートされていません! –
申し訳ありませんが、それはタイプミスでした。最初の ':'は前の行のように '?'でなければなりません。 –
ああ、今それは働いた。しかし、私はまだそれが動作する方法について少し混乱しています。私が設定したいクラスを選択するには、[ngClass] = "smSize? 'big': 'small'" 'という形式を使用したいと考えています。自分のHTMLで使用したいクラスを渡すだけでいいですか? '' –