Как отправить параметры на сервер через http get - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь выучить asp.net rest api и Angular с помощью Kendo UI. все работает хорошо, но я хочу сделать пейджинг на стороне сервера, отправив take и skip в качестве параметра Get в API.

это моя реализация метода get API:

       public ResaultPage GetProducts(int skip =1, int take=20)
          {
       ResaultPage rp = new ResaultPage();
       var count= db.Products.Count<Product>();

        rp.count = count;
        IPagedList<Product> x = db.Products.OrderBy(s => 
         s.CategoryID).ToPagedList<Product>(skip, take);
        foreach (Product v in x)
        {
            rp.pr.Add(v);
        }

        return rp;}

Где класс ResaultPage содержит список Product и правильность подсчета.

Вот моя функция продукта product-service.ts:

    getProducts1(skip:any, take:any ): Observable<ResaultPage> {
     let params = new URLSearchParams(); 
     params.set('Skip', skip);  
     params.set('Take', take); 
     return this.http.get<ResaultPage>(this.productsUrl)
  .pipe(
    tap(data => console.log(JSON.stringify(data))),
    catchError(this.handleError)

     );
      }

и вот функция обработчиков product-component.ts:

         public pageChange(event: PageChangeEvent): void {
            this.gridState.skip = event.skip+10;


          this.productService.getProducts1(this.gridState.skip,
        this.gridState.take).subscribe(
           sub  => {
        this.totalCount=sub.count;
       this.products=sub.pr;
          console.log(this.products);

         });

при запуске приложения я получаю первые 20 записей на той же странице с (1,2) подкачкой и когда я нажимаю 2, я все равно получаю то же самое.

Мне нужно получить только 10 на страницу, например, а остальные 10 на странице 2.

где правильность Kendo Ui для skip = 1 и для take = 10;

1 Ответ

0 голосов
/ 24 января 2019

после URL необходимо передать еще один объект с именем options, который содержит параметры.и вы можете использовать HttpParams для отправки параметров

getProducts1(skip:any, take:any ): Observable<ResaultPage> {
     let myparams = new HttpParams(); 
     myparams.set('Skip', skip);  
     myparams.set('Take', take); 
     return this.http.get<ResaultPage>(this.productsUrl,{params:myparams})
  .pipe(
    tap(data => console.log(JSON.stringify(data))),
    catchError(this.handleError)

     );
      }
...