【问题标题】:Pass data from Console to URL将数据从控制台传递到 URL
【发布时间】:2020-02-28 13:53:19
【问题描述】:

当我点击按钮时,我会在控制台中获得正确的数据,但现在当我点击按钮时,我希望数据“reid”应该传递给 url。当我尝试时:

this.router.navigateByUrl('/details/' + this.results.reid);

我得到未定义的回复。

home.page.ts

searchName() {
    this.results = this.userService.getName(this.searchTermName).subscribe(result => {
        console.log('Restaurant: ', result);
        this.router.navigateByUrl('/details/' + this.results.reid);
        });
  }

home.page.html

<ion-grid >
        <ion-row >

            <ion-col size-xs="12" size-sm="12" size-md="8" size-lg="8">
                <ion-searchbar placeholder="Restaurant" [(ngModel)]="searchTermName" ></ion-searchbar>
            </ion-col>
        </ion-row>
</ion-grid>

<div class="btn" >
  <ion-button (click)="searchName()"color="primary" fill="solid">
       suchen
  </ion-button>
</div>

user.Service.ts

 getName(name1) {
    return this.http.get('http://127.0.0.1:8000/searchRestaurantByName', {headers: {name: name1}}).pipe(
        map(name => {
            console.log('RAW: ', name1);
            return name;
        })
    );
  }

【问题讨论】:

  • 看起来 Restaurant 是一个数组。你需要使用索引。

标签: javascript angular ionic-framework search


【解决方案1】:

results 是一个数组,所以你应该使用:

this.router.navigateByUrl('/details/' + result[0].reid);

请注意,您有一个错字,如果我没看错的话,它是 result 而不是 results

【讨论】:

  • 没有结果属性可以使用 this.result[0] 你的意思是结果[0]
【解决方案2】:

this.results 是订阅。它不包含任何“reid”属性。

你应该做的是

  searchName() {
    this.userService.getName(this.searchTermName)
     .subscribe(result => {
       this.router.navigateByUrl('/details/' + result[0].reid);
     });
  }

【讨论】:

    【解决方案3】:

    我看到this.results 是一个对象数组,你得到undefined 是正常的, 尝试在进行重定向后首先使用 find wich 对象。 对于测试,你可以使用result[0].reid 你应该得到你的 39。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-27
      • 1970-01-01
      • 2015-11-06
      • 1970-01-01
      • 2018-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多