typescript - Angular 5 - Hent id fra URL
Jeg er ny med Angular 5. Så jeg prøver å hente ut ID-en fra URL-en slik at jeg kan sende den til en PHP-fil og deretter få tilbake noen data fra en database.
import { Component, OnInit } from '@angular/core';
import {HttpClient} from '@angular/common/http';
import { Router, ActivatedRoute } from '@angular/router';
@Component({
selector: 'app-a-usuario',
templateUrl: './a-usuario.component.html',
styleUrls: ['./a-usuario.component.css']
})
export class AUsuarioComponent implements OnInit {
urlop = 'http://localhost/crudu/mostrarID.php';
datos: any;
id: number;
constructor(private http: HttpClient, private router: Router, private route: ActivatedRoute) {
}
ngOnInit() {
this.route.params.subscribe(params => {
this.id = params['id']; // (+) converts string 'id' to a number
});
console.log(this.id);
}
}
Jeg har prøvd alle løsninger, men det fungerer ikke (i konsollloggen vises det NaN eller Undefined)
const appRoutes: Routes = [
{'path': 'admin', component: AdminComponent},
{'path': 'eUsuario', component: AUsuarioComponent, children: [{
path: ':id',
component: AUsuarioComponent
}]},
{'path': 'iUsuario', component: IUsuarioComponent},
{path: '',
redirectTo: '/',
pathMatch: 'full'},
];
Svar #1
Alt du trenger å gjøre er å flytte console.log inn i subscribe for å se verdien. Å prøve å få tilgang til verdien utenfor params.subscribe vil ikke fungere, som du har oppdaget. Se nedenfor.
ngOnInit() {
this.routeListener = this.route.params.subscribe(params => {
this.id = +params['id']; // (+) converts string 'id' to a number
console.log(this.id);
});
}
Senere inne i ngOnDestroy, avslutt abonnementet for å forhindre minnelekkasjer, slik som:
ngOnDestroy() {
this.routeListener.unsubscribe();
}
Eventuelle andre handlinger du vil utføre med det som returneres fra params['id'] verdien må også skje innenfor subscribe.
Svar #2
Jeg fant løsningen.
{'path': 'eUsuario', component: AUsuarioComponent, children: [{
path: ':id',
component: AUsuarioComponent
}]},
I stedet for å ha en barnerute, kan du gjøre det direkte.
{'path': 'eUsuario/:id', component: AUsuarioComponent},
