2016-03-08 2 views
0

Я хочу показать загрузчик, когда запрос HTTPпогрузчик в angular2 Http запрос

return this.http.get(this._apiUrl) 
      //.map(res =><Location[]> res.json()) 
      .map(res => res.json()) 
      .filter(x => x.length > 0) 
      .delay(5000) 
      .catch(this.handleError); 

в коде выше, где можно указать шаблон загрузчика?

ответ

0

Http сам по себе не обеспечивает прямую поддержку для показа погрузчиков.

Просто установите поле в компоненте или службы

fetchData() { 
    this.isLoading = true; 
    return this.http.get(this._apiUrl) 
     //.map(res =><Location[]> res.json()) 
     .map(res => res.json()) 
     .filter(x => x.length > 0) 
     .delay(5000) 
     .catch(this.handleError) 
     .do(this.isLoading = false); 
} 

Затем связать видимость загрузчиком isLoading

<my-loader *ngIf="isLoading"></my-loader> 
+0

Не правда ли лучше использовать 'before', когда вы действительно подписываетесь на наблюдателя? – micronyks

+0

Спасибо за подсказку. Я еще не сталкивался с этим оператором. У вас есть ссылка, которую я не мог найти? –

+0

Нет, я не говорю об операторе. Я говорю о том месте. Когда вы подписываетесь на наблюдателя, вы можете использовать его перед подпиской или до того, как вы позвоните в службу. – micronyks

1

Вы должны прочитать наш разговор. Если нет, прочитайте сначала. то вы можете попробовать это решение.

Вы собираетесь вернуть observer. И я считаю, что это может быть ваш fetch function написан в некотором external service.

fetch(){ 
return this.http.get(this._apiUrl) //.map(res => res.json()) .map(res => res.json()) .filter(x => x.length > 0) .delay(5000) .catch(this.handleError); 
} 

Итак, я хотел бы предложить, чтобы добавить его, прежде чем подписаться на возвращаемый наблюдатель, как это,

this.isLoading=true; 
this.externalService.fetch.subscribe((result) =>{ 
        this.result =result 
        }, 
        (err)=>console.log(err), 
        ()=>{console.log("Done") 
          this.isLoading=false; 
        }); 

}

проверить это для справки http://plnkr.co/edit/UMMFk57seNrxqdgyeQIT?p=preview

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