Angular Router param по тому же маршруту - PullRequest
0 голосов
/ 05 мая 2018

Маршруты

{path:'dashboard',component: DashboardComponent },
{path:'dashboard/:id',component: DashboardComponent },

Router Links

    <li><a [routerLink]="['/dashboard', 'kRX4eLiwmEau8X2SdoKScA==']">Appliances</a></li>
    <li><a [routerLink]="['/dashboard', 'FQtZRfDqtkGrn2II8HobZw==']">Tools and Gadgets</a></li>
    <li><a [routerLink]="['/dashboard', 'EMz9RMY4RESyKtvFVAJTVQ==']">Table Linen</a></li>
    <li><a [routerLink]="['/dashboard', 'BamlddxbUk2lx3uhaT4Hbg==']">Bakeware</a></li>
    <li><a [routerLink]="['/dashboard', 'VZxPmhcsxEmOGLTvp5Mvxw==']">Serveware</a></li>
    <li><a [routerLink]="['/dashboard', 'QEkCu3nN5UWYBHmCOuvGUA==']">Serveware</a></li>
    <li><a [routerLink]="['/dashboard', 'DKHH6dljMkWazcakJSxC1g==']">Decor</a></li>

Код

ngOnInit() {
   this.sub = this.route.params.subscribe(params => {
      this.id = params['id']; // (+) converts string 'id' to a number
      // In a real app: dispatch action to load the details here.
   });
   console.log( this.id )
   let postdata = {
     id :this.id
   }

  axios({
    method: 'post',
    data: this.serializeObj(postdata),
    url: this.initialapi+'/Product/GetProducts',
    headers: {
        'Content-Type':'application/x-www-form-urlencoded',
    }
    }).then(response => {
        console.log(_.uniqBy(response.data,'id'))
        this.productlist = _.uniqBy(response.data,'id')

    })
    .catch(function (error) {
        console.log(error);

    });
}

Что я хочу сделать, так это то, что когда я нажимаю на любую ссылку маршрутизатора, параметры будут сохраняться в переменной и переходить к моему посту, это работает, хотя, когда я обновляю свою страницу, потому что я использую http для включения ngOnInit().

как я могу получить эту работу, когда я нажимаю на ссылку, и она получает мне данные, и есть ли способ, которым я могу получить эти данные всякий раз, когда нажимаю на маршрут и получаю мне данные на том же маршруте

1 Ответ

0 голосов
/ 05 мая 2018

Вот как это сделано и работает сейчас

 this.route.paramMap.subscribe(params => {
  console.log(params.get('id'));
  this.id = params.get('id');
// data hit
      let postdata = {
        id :this.id
      }
     axios({
        method: 'post',
        data: this.serializeObj(postdata),
        url: this.initialapi+'/Product/GetProducts',
        headers: {
            'Content-Type':'application/x-www-form-urlencoded',
        }
        }).then(response => {
            console.log(_.uniqBy(response.data,'id'))
            this.productlist = _.uniqBy(response.data,'id')

        })
        .catch(function (error) {
            console.log(error);
        });
    });
...