Я использую ng2-select для отображения списка элементов, чтобы пользователь мог искать и найти подходящий из списка выбора. Проблема, с которой я столкнулся, заключается в том, что он работает только со статическими данными. Мои данные загружаются из веб-сервиса RESTful. Я пробовал несколько хаков и трюков, но не могу загрузить данные из веб-службы в ng2-select. Похоже, этот плагин не поддерживает загрузку данных веб-службы. Есть ли рабочий хак для загрузки данных веб-сервиса в ng2-select?
Если нет, предложите другой плагин angular2, который может загружать данные из веб-службы и позволяет пользователю искать и выбирать.
Обновление:
Я не упомянул, что успешно получаю данные из своего веб-сервиса. Нет проблем с получением данных из веб-сервиса. Проблема с ng2-select. Я успешно заполняю массив items
полученными данными из веб-службы (подтверждено массивом печатных элементов на консоли), но ng2-select ничего не показывает. Если я не извлекаю данные из веб-службы, а только заполняю массив локальными данными (которые назначаются во время инициализации), он работает и отображает локальные данные.
Он просто не может работать с запросами. Вот пример кода из комментария
Product-Category.service.ts
import { Injectable } from '@angular/core';
import { Http} from '@angular/http';
import {Observable} from "rxjs";
@Injectable()
export class ProductCategoryService
{
apiUrl: string = "http://jsonplaceholder.typicode.com/users";
constructor(private http : Http){}
public getUserData(): Observable<any> {
return this.http.get(this.apiUrl)
.map(result => {
return result.json();
});
}
}
Product-category.component.ts
import { Component, OnInit , ViewChild , AfterViewInit , ElementRef } from '@angular/core';
import { Http, Headers , Response , RequestOptions } from "@angular/http";
import { Observable } from 'rxjs/Rx';
@Component({
selector: 'product-category',
templateUrl: 'product-category.component.html',
styles: []
})
export class AddProductCategoryComponent implements OnInit
{
public items = [];
my :boolean= false;
constructor(public productCategoryService:ProductCategoryService){}
ngOnInit()
{
this.getItems();
}
getItems()
{
this.productCategoryService.getUserData().subscribe(
items => this.items
);
}
Update2: для простоты я приложил код и изображение, чтобы лучше понять. Вы можете видеть в коде и изображении, что после получения ответа от сервера. Результат можно увидеть в консоли. Но для простоты добавим запись в массив вручную. Вы можете видеть, что ng2-select
отображает только данные, которые были заполнены до отправки запроса, но массив также содержит объект, который был заполнен после получения ответа от сервера.
Код
public items: any = [];
ngOnInit()
{
this.items.push({id : 1 , text : 'Option1'});
this.getItems();
console.log(this.items);
}
getItems()
{
this.productCategoryService.getUserData().subscribe(
success =>
{
this.items.push({id : 2 , text : 'Option2'});
console.log(success);
}
);
}