Lightning Webコンポーネントのチェックボックスにチェックボックスを合格する方法は誰でも知っていますか?
私のコードは次のようになります。
import { LightningElement, track } from 'lwc';
export default class MyComponent extends LightningElement {
@track isChecked;
constructor() {
super();
isChecked = false;
}
}
_
<template>
<lightning-card title="My Card" icon-name="custom:custom9">
<div class="slds-m-around_medium">
<lightning-input type="checkbox" label="my checkbox" name="input1" checked="{isChecked}"></lightning-input>
</div>
</lightning-card>
</template>
_
そしてそれはうまくいきません。
これを行う方法を考え出した唯一の方法は、JavaScriptを使用してchecked
属性を追加することです。
この例では、checked
の設定値のDOM要素にisChecked
属性を手動で追加します。
JavaScript:
_import { LightningElement, track } from 'lwc';
export default class MyComponent extends LightningElement {
@track _isChecked = false;
set isChecked(newValue) {
this._isChecked = newValue;
this.template.querySelector('lightning-input.cb').checked = newValue;
}
get isChecked() {
return this._isChecked;
}
toggleChecked() {
this.isChecked = !this.isChecked;
}
onChecboxChange(event) {
this.isChecked = event.target.checked;
}
}
_
HTML:
_<template>
<lightning-input class="cb" type="checkbox" label="my checkbox" onchange={onChecboxChange}></lightning-input>
<br/>
<lightning-button label="Toggle Checkbox" onclick={toggleChecked}></lightning-button>
<br/>
Checked Value: {isChecked}
</template>
_
LWC遊び場の例: https://developer.salesforce.com/docs/component-library/tools/playground/1wdderq4x/31/edit
セッターを使用する代わりにこれを行うもう1つの方法は、テンプレートがレンダリング/再レンダリングされるときはいつでもrenderedCallback()
のようなものを呼び出して、this.template.querySelector('lightning-input.cb').checked = newValue;
ライフサイクルのフックを使用することです。ただし、チェックされた状態のトラッキングを実際にトラッキングしていることを確認する必要があります。または、変数が変更されたときにテンプレートが再レンダリングされない可能性があります。
onclick
および内部の内部の動作を追跡するためにチェックボックスにイベントを設定する必要があります。_event.target.checked
_内の値を見ることができます。これがサンプルコードです。
チェックボックスタグ:
_<lightning-input type="checkbox" onclick={hereIsTheMethod} label="checkbox" name="someName"></lightning-input>
_
JavaScriptメソッド:
_hereIsTheMethod(event){
console.log(event.target.checked);
}
_
私が書いたコードを参照してください、それは私に尋ねないならそれは理にかなっているはずです。
1つ以上のチェックボックスのためのあなたのHTML
<template>
For multiple Checkbox use Checkbox Group
<lightning-checkbox-group name="Checkbox Group"
label="Checkbox Group"
options={options}
value={value}
onchange={handleChange}></lightning-checkbox-group>
<p>Selected Values are: {selectedValues}</p>
for just single Checkbox
<input type="checkbox" name="vehicle1" value="Bike" id="mycheck" onclick={myFunction}> I have a bike<br>
<p>Selected:</p> {checkvalue}
</template>
_
それをシングルチェックボックスのために、それをシングルチェックボックスのためにそれを割り当てるためにそれをチェックボックスをオンにして、最後の値に応じてtrue falseを割り当てることができます。
import { LightningElement, track } from 'lwc';
export default class CheckboxGroupBasic extends LightningElement {
@track value = ['option1'];
@track checkvalue ;
get options() {
return [
{ label: 'Ross', value: 'option1' },
{ label: 'Rachel', value: 'option2' },
];
}
get selectedValues() {
return this.value.join(',');
}
handleChange(e) {
this.value = e.detail.value;
}
myFunction(e){ // it is simple assigning value. here you can toggle value
this.checkvalue = e.target.value;
}
}
_
私たちはあなたがそれを働いてみたいlwc遊び場のリンクを持っています。 https://developer.salesforce.com/docs/component-library/tools/playground/1_ubrgnj9/9/edit
回答は単純です、コードを変更してください。
import { LightningElement, track } from 'lwc';
export default class MyComponent extends LightningElement {
@track isChecked;
constructor() {
super();
isChecked = false;
}
}
<template>
<lightning-card title="My Card" icon-name="custom:custom9">
<div class="slds-m-around_medium">
<lightning-input type="checkbox" label="my checkbox" name="input1" checked={isChecked}></lightning-input>
</div>
</lightning-card>
</template>
_
この方法でチェックされたプロパティを割り当てる必要があります。
checked={isChecked}
_
<template>
<lightning-card variant="Narrow" title="Hello" icon-name="standard:account">
<lightning-input type="toggle" label="Name" onchange={displayStatus} ></lightning-input>
<lightning-card>
{displaytext}
</lightning-card>
</lightning-card>
</template>
=================================js=====================================
import { LightningElement, track } from 'lwc';
export default class ConditionalWebComponent extends LightningElement {
@track status;
@track displaytext= '';
displayStatus(event){
alert(event.target.checked);
if(event.target.checked === true){
this.displaytext = 'You are active';
}if(event.target.checked === false){
this.displaytext = 'You are inactive';
}
}
}
_
event.target.Checked - チェックボックスから値を取得するために使用されます