У меня вопрос по поводу моего кода.
Я хочу использовать это автозаполнение в своем проекте для страны Плагин
Я получаю всю страну в формате JSON, как показано ниже:
JS: country [{
JS: "name": "Afghanistan",
JS: "short_name": "AF",
JS: "country_id": 1
JS: }, {
JS: "name": "Albania",
JS: "short_name": "AL",
JS: "country_id": 2
JS: }, {
JS: "name": "Algeria",
JS: "short_name": "DZ",
JS: "country_id": 3
JS: }, {
JS: "name": "American Samoa",
JS: "short_name": "AS",
JS: "country_id": 4
JS: }, {
JS: "name": "Andorra",
JS: "short_name": "AD",
JS: "country_id": 5
JS: },{
JS: "...}]
В сервисе я вызываю функцию как в этом коде:
public getAllCountryws(): Observable<Country[]> {
return this.http.get(Api.getUrl(Api.URLS.countryGetAll), {
})
.pipe(map((response: Response) => {
let res = response.json();
if (res.StatusCode === 1) {
this.auth.logout();
} else if (res.StatusCode === 4) {
return false;
} else if (res.StatusDescription === 'No result') {
return false;
} else if (res.StatusDescription === '[]') {
return false;
} else if (res.StatusDescription === []) {
return false;
} else {
return res.StatusDescription.map(country => {
return new Country(country);
});
}
},
(error) => {
console.log(error);
}))
}
А в component.ts я вызываю сервисную функцию, как в этом коде:
public country: Country[] = [];
private _items: ObservableArray<TokenModel>;
@ViewChild("autocomplete") autocomplete: RadAutoCompleteTextViewComponent;
ngOnInit(): void {
this.getallcountry();
}
getallcountry() {
this.ws.getAllCountryws().subscribe(
country => {
this.country = country;
const mycountry = country;
console.log('mycountry', mycountry) // show correct JSON
for (let i = 0; i < mycountry.length; i++) {
console.log(mycountry.length) // show correct
this._items.push(new TokenModel(mycountry[i].company_id, null));
}
},
err => console.error('err', err),
() => console.log('error')
);
}
ОШИБКА:
ошибка
Также в html у меня есть этот код:
<Label text="Select Country*" row="0" col='0'></Label>
<RadAutoCompleteTextView #autocomplete [items]="_items" suggestMode="Suggest" displayMode="Tokens"
row="1" col='0' hint="Country">
<SuggestionView tkAutoCompleteSuggestionView>
<ng-template tkSuggestionItemTemplate let-item="item">
<StackLayout orientation="vertical" padding="10">
<Label [text]="item.name"></Label>
</StackLayout>
</ng-template>
</SuggestionView>
</RadAutoCompleteTextView>
На вид ничего не показывает. Результатов не найдено.
Обновление:
От: private _items: ObservableArray<TokenModel>;
Кому: public _items: TokenModel[] = [];
Добавить:
get dataItems(): TokenModel[] {
console.log('this._items', this._items)
return this._items;
}
Ошибка с результатом
В html-изменении:
от: <RadAutoCompleteTextView #autocomplete [items]="_items" suggestMode="Suggest" displayMode="Tokens"
до:
<RadAutoCompleteTextView #autocomplete [items]="dataItems" suggestMode="Suggest" displayMode="Tokens"
В поле зрения не отображаются результаты.