2016-05-12 4 views
0

У меня есть службы, как:Как проверить все HTTP GET запрос завершен (разрешен) - Угловой 2

getItems(id: string): Observable<items> { 
    return this.http.get(this.url + id) 
     .map(response => response.json()); 
} 

В компоненте шаблона:

<tr *ngFor="#item of items"> 
    <td> 
     <another-component [values]=item.values></another-component> 
    </td> 
</tr> 

В другой-компоненте:

ngOnChanges() { 
    this.values.filter((value) => value.number > 0) 
     .map((value) => this.positive[value.id] = value.number); 
     } 

Есть список значений и идентификаторов. ı хотите отделить положительные результаты перед их показом.

У меня возникла ошибка, указав, что .filter не может использоваться для неопределенного. После этого я использую ngIf для проверки наличия свойства, но он показывает только некоторые значения (которые разрешены).

Так,

Как я могу проверить все запросы сделаны и все данные готовы (разрешено) в более правильном пути?

или проблема, которую я мог решить асинхронно?

EDIT:

Я использую подписываться внутри моего компонента.

ngOnInit() { 
    let id = this._routeParams.get('id'); 
    this.getItems(id) 
} 
this._itemsService.getItems(id).subscribe(
     data => this.items = data 
     ) 

Но не все значения отображаются из другого компонента, так как он не завершен. Как я могу заставить другие компоненты знать, что он завершен, тогда он может фильтровать полный список. Поскольку фильтрация при успешном завершении не завершена, фильтр применяется только к одному или двум значениям и только одно или два значения.

+0

Можете ли вы разработать немного больше «Но не все значения появляются из другого компонента si Это не завершено. «Так как это (что?) Не завершено. Что вы подразумеваете под« завершенным »здесь? –

+0

@ Günter Zöchbauer Я получаю некоторые значения из rest api и разбора его. Когда я проверяю страницу, не все значения отображаются. обновляя страницу, все они отображаются (я думаю, что это потому, что браузер кэширует страницу) .Так что я хочу сказать, что запрос не завершен, и даже если он завершен, другие значения не загружаются асинхронно. Спасибо за внимание. – user3637478

ответ

1

попробовать

map().subscribe() 

Источник: Angular2 http.get() ,map(), subscribe() and observable pattern - basic understanding

Синтаксис:

.subscribe(success, failure, complete); 

пример:

.subscribe(
    function(response) { console.log("Success Response" + response)}, 
    function(error) { console.log("Error happened" + error)}, 
    function() { console.log("the subscription is completed")} 
); 
+0

спасибо за помощь Но это не решение моей проблемы.Я попытался прояснить свой вопрос, отредактировав его. Извините за путаницу. – user3637478

+0

Почему вы не фильтруете внутри компонента на подписке? – Som

+0

, потому что мне нужно использовать этот «другой компонент», внутри нескольких компонентов. И я должен дать ему только одно свойство объекта как входное. – user3637478

Смежные вопросы