جاوااسکریپت - چگونه ngselect را در انگولار از قبل پر کنیم؟
من در حال دریافت برخی موارد از طریق یک تماس http هستم و سپس میخواهم ngselect را پیشپر کنم، اما استفاده از روش abstractcontrol.setvalue() به نظر نمیرسد کار کند.
کد قالب
<ng-select [items]="cars"
bindValue="code"
bindLabel="displayName"
formControlName="car"
[clearable]="false"
[searchable]="false"
id="car"
placeholder="Select a car">
کد مؤلفه
this.setValueForPrePopulatedPlanningDetail('car', car);
private setDefaultValue(fieldName: string, value: any) {
if (value && value.length > 0) {
const field = this.myFormGroup.get(fieldName);
field.markAsDirty();
field.setValue(value);
}
}
پاسخ شماره ۱
شما باید نتیجه خود را در فهرست (کشورها) تنظیم کنید و سپس از setvalue برای انتخاب گزینه استفاده کنید
نتیجه را در لیست خود در کامپوننتتان قرار دهید:
this.countries = ['XPTO','XPTO2','XPTO3']
موارد زیر را در HTML خود تعریف کنید:
<select>
<option [value]="country" *ngFor="let country of countries"> {{country}}</option>
</select>
پاسخ شماره ۲
روش صحیح استفاده از ng-select این است که مقادیر را به اتصال ورودی items اختصاص دهید.
به عنوان مثال,
<ng-select [items]="cities2"
bindLabel="name"
bindValue="id"
[multiple]="true"
placeholder="Select cities"
[(ngModel)]="selectedCityIds">
</ng-select>
و در فایل component.ts خود، گزینههای ng-select را با اشتراک در observable بازگردانده شده توسط درخواست HTTP پر خواهید کرد و آن را به ویژگی cities2 اختصاص خواهید داد.
cities2: any[] = [];
ngOnInit() {
this.dataService.getData.subscribe(res => {
this.cities2 = res;
});
}
این دموی ممکن است مستقیماً به پرسشهای شما پاسخ ندهد، اما نشان میدهد که چگونه اتصالات ورودی مختلف (مانند items) با ng-select کار میکنند.
