Что я пытаюсь сделать:
Я хочу использовать счетчик всякий раз, когда запрашивается HTTP-запрос. Другими словами, я хочу, чтобы пользователь видел экран загрузки всякий раз, когда HTTP-запрос происходит в моем приложении app.component.
Мои параметры spinner.component и spinner-service совпадают с ответом на вопрос this.
И компонент моего app.component являетсяУгловой 2 загрузчик по каждому запросу http
@Component({
selector: 'todoApi',
template: `
<div class="foo">
<spinner-component></spinner-component>
<h1>Internship Project</h1>
<a [routerLink]="['Dashboard']">Dashboard</a>
<a [routerLink]="['Tasks']">List</a>
<router-outlet></router-outlet>
<div>
`,
directives: [ROUTER_DIRECTIVES,SpinnerComponent],
providers: [
ROUTER_PROVIDERS,
]
})
@RouteConfig([
{
path: '/dashboard',
name: 'Dashboard',
component: DashboardComponent,
useAsDefault: true
},{
path: '/tasks',
name: 'Tasks',
component: TaskComponent
},{
path: '/detail/:id',
name: 'TaskDetail',
component: TaskDetailComponent
},
])
Для conclue, когда запрос HTTP происходит в одном из этих маршрутов, я хочу показать счетчик для пользователя. Я знаю, что это был плохой вопрос, но я новичок в угловой 2, и я был бы очень благодарен, если бы кто-нибудь мог мне помочь в этом.
Спасибо большое!
Edit !:
Решение с ответом Гюнтера: Я обмотал http
и spinner-service
в HttpClient
компонент и использовать его вместо регулярного модуля HTTP. Вот мой HttpClient
компонент:
import { Injectable } from '@angular/core';
import { Http, Headers } from '@angular/http';
import { SpinnerService} from './spinner-service';
@Injectable()
export class HttpClient {
constructor(
private http: Http,
public spinner: SpinnerService
){
}
createAuthorizationHeader(headers:Headers) {
headers.append('Authorization', 'Basic ' + btoa('username:password'));
}
get(url) {
this.spinner.start();
let headers = new Headers();
this.createAuthorizationHeader(headers);
return this.http.get(url, { headers: headers }).do(data=> {this.spinner.stop()});
}
post(url, data) {
this.spinner.start();
let headers = new Headers();
this.createAuthorizationHeader(headers);
return this.http.post(url, data, { headers: headers }).do(data=> {this.spinner.stop()});
}
}
Может создавать пользовательские службы для выполнения запросов HTTP, расширяющих HttpClass, предоставленных угловых и отслеживать 'isBusy' состояние вашей таможенной службы при каждый запрос. – Lekhnath