私はangular6 _multi-select
_を使用していますが、これはngOnInit
のangularサービスからのオブジェクトの配列に含まれる項目のリストを持ち、_multi-select
_に渡されます。
_this.sensorTypes = [
{ label : "Power", value : "P"},
{ label : "Current", value : "C"},
{ label : "Voltage", value : "V"}
]
_
フォームが読み込まれるときに_multi-select
_にデフォルトで2つの値を設定します。このため、_multi-select
_にngModel
をバインドし、その変数にngOnInit
に値を設定しています
_this.selectedAttributes = [
{label : "Current", value : "C"},
{label : "Voltage", value : "V"}
]
_
私のcomponent.htmlで私はこのように_multi-select
_を作成しています:
_<div class="form-group row">
<div class="col-sm-10">
<ng-select
[ngClass]="'ng-select'"
[(ngModel)]="selectedAttributes"
[ngModelOptions]="{standalone: true}"
[options]="sensorTypes"
[multiple]="true">
</ng-select>
</div>
</div>
_
ただし、値は複数選択のデフォルトでは設定されていません。
[items]
の代わりに[options]
入力バインディングを使用する必要があります
<ng-select
[items]="sensorTypes"
bindLabel="label"
[multiple]="true"
placeholder="Select"
[(ngModel)]="selectedAttributes">
</ng-select>
そして、コンポーネントのmodule.tsにNgSelectModule
をインポートします。また、FormsModule
をインポートしていない場合は、ngModel
との双方向バインディングで機能するようにインポートする必要があるため、インポートする必要があります。
import { NgSelectModule } from '@ng-select/ng-select';
import { FormsModule } from '@angular/forms';
.
.
@NgModule({
imports: [
FormsModule,
NgSelectModule,
.
.
.
bindlabelとbindvalueの両方を使用している場合は、最初に選択した値のインデックスを検索しますt e
var index= this.sensorTypes.findIndex(x => x.ID ==something);
//this will set value
this.selectedAttributes= this.sensorTypes[index].ID;
値はデフォルトで複数選択で設定されていません
このため、ngOnInit()
のthis.sensorTypes[0]
のngModelにng-select
を割り当てます
ngOnInit() {
this.selectedAttributes = this.sensorTypes[0]
}
これにより、最初の属性がデフォルトとして取得されます。