I am trying to get a uuid from the URL (which looks like https://something.com/card?id=where uuid goes) and then use that uuid to get a http get request.
Right now I have my app.component.ts looks like:
private cardUuid: string; constructor(private service: AppService, private route: ActivatedRoute){ let sub = this.route.params.subscribe((params: Params) => { this.cardUuid = params['id']; console.log(this.cardUuid) }) } ngOnInit(){ this.service.browserUuid = 'http://address/cards?uuid=' + this.sub.cardUuid; console.log(this.sub.cardUuid) }
My console logs are coming back as undefined. I am wondering why that is the case? Is the method for getting the uuid wrong or is the call timing wrong?
Any help/tips/suggestions would be much appreciated.
Update: after a suggestion from @Alexander Staroselsky, I restructured my method of calling the uuid from the url per angular.io docs.
app.component.ts:
card: Card = {}; ngOnInit() { this.route.paramMap .switchMap((params: ParamMap) => this.service.fetchCardUuid(+params.get('id'))) .subscribe( card => { this.card = card; this.getVenueUuid(this.card); }); } app-service.ts:
public UuidUrl = 'http://websiteaddress/cards?uuid=' constructor(private http: Http){} private extractData(res:Response) { let body = res.json(); return body || []; } fetchCardUuid(id: number) { return this.http.get(this.UuidUrl + id) .map(this.extractData) } However I am still not getting the app to load properly using the Uuid that is being fetched from the Url. In the console network is showing a get request of card?uuid=0. Again, any help would be much appreciated.
http://address/cards?uuid=is usingqueryParams, notparams. You need to usethis.route.queryParamMapinstead ofthis.route.paramMap.paramMapwill not have any values in it based on how the url is set up.paramsvsqueryParamsin the context of general RESTful API applications. My original answer had queryParams referenced. Glad to hear it worked out! Please mark the answer that help you achieve the solution.