Quello che sto cercando di fare è:
Voglio usare lo spinner ogni volta che una richiesta http si avvicina. In altre parole, voglio che l'utente visualizzi una schermata di caricamento ogni volta che si verifica una richiesta http nel mio app.component.
I miei file spinner.component e spinner-service sono gli stessi della risposta nella domanda this.
E componente del mio app.component èCaricatore angolare 2 su ogni richiesta 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
},
])
Per conclue, ogni volta che si verifica una richiesta HTTP in uno di questi percorsi, voglio mostrare la casella di selezione per utente. So che questa è stata una brutta domanda, ma io sono nuovo di Angular 2 e sarei davvero grato se qualcuno potesse aiutarmi con quello.
Grazie mille!
Modifica !:
Soluzione con la risposta di Günther: Ho avvolto la mia http
e spinner-service
in un componente HttpClient
e lo ha usato al posto del normale modulo HTTP. Qui è la mia HttpClient
componente:
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()});
}
}
Forse si crea un servizio personalizzato per eseguire le richieste http estendono la HttpClass fornito dal angolare e tenere traccia dello stato 'isBusy' nel vostro servizio personalizzato su ogni richiesta – Lekhnath