2016-11-30 6 views
0

Я использую эту угловую службу, чтобы получить данные из Экспресса:параметров отправки URL Выразить с угловым 2

getRestaurants(districtId) : Observable<void[]>{ 
    let params: URLSearchParams = new URLSearchParams(); 
    params.set('id', districtId); 

    return this.http.get(this.url, { search: params }) 
    .map((res:Response) => res.json()) 
    .catch((error:any) => Observable.throw(error.json().error || 'Server error')); 
} 

Я использовал этот URL http://localhost:5050/api/district/restaurants?id=8

Это прекрасно работает, если в экспрессе я использую req.query Но мне нужно использовать этот новый URL http://localhost:5050/api/district/:id/restaurants и использовать req.params в Express.

Моя проблема заключается в том, что я не могу установить параметр :id, используя Angular без изменения строки URL, и я полагаю, что есть лучший способ выполнить эту задачу. Спасибо за вашу помощь

ответ

0

Что об этом:

private url = 'http://localhost:5050/api/district/:id/restaurants'; 

private _prepareUrl(districtId: number): string { 
    return this.url.replace(':id', districtId); 
} 

getRestaurants(districtId) { 
    // ... 

    this.http.get(this._prepareUrl(districtId), ...); 

    // ... 
} 

Вы можете использовать функцию Router «s createUrlTree, но вы будете иметь Prepare-функцию тоже ..

private urlPrefix = 'http://localhost:5050/api'; 

constructor(private _router: Router) { } 

private _prepareUrl(districtId: number): string { 
    return this.urlPrefix + this._router.createUrlTree(['district', districtId, 'restaurants']).toString(); 
} 

getRestaurants(districtId) { 
    // ... 

    this.http.get(this._prepareUrl(districtId), ...); 

    // ... 
}