【问题标题】:Child Component is not updating when data inside object is changed更改对象内的数据时,子组件不更新
【发布时间】:2018-01-12 09:29:14
【问题描述】:

我有定义路由的 AppComponent。 在那里,我有一个像 Home/Scan/:name 这样的设置,其中我有多个名称,它们调用不同的 GET 服务,这些服务接受名称作为参数。

我已将[routerLink]="['Scanning',r.name]" 定义为链接。我的子组件没有用新数据刷新。请告诉我做错了什么。

const routes: Routes = [
{ path: 'Home', component: ReportComponent,children:[
{ path: 'Scanning', component: ScanningOutputComponent},
{ path: 'Scanning/:name',component: ScanningOutputComponent }
 ]},
{ path: '',redirectTo:'Home', pathMatch:'full' },
{ path: '**',redirectTo:'Home', pathMatch:'full' }
];

更新代码。

从 ReportComponent 接收以下代码的参数。

  this.aRoute.params.subscribe(params => this.sub = params['name']);
switch (this.sub) {
  case 'All':
    this.http.get('http://192.168.117.107:8080/rest/ScanningOutput/all')
      .subscribe(data => {
        this.scanningdata = data;
        //console.log(data);
      });
    break;
  case 'POD':
    this.http.get('http://192.168.117.107:8080/rest/ScanningOutput/ByDevice/POD')
      .subscribe(data => {
        this.scanningdata = data;
        //console.log(data);
      });
    break;
  case 'PUP':
    this.http.get('http://192.168.117.107:8080/rest/ScanningOutput/ByDevice/PUP')
      .subscribe(data => {
        this.scanningdata = data;
        //console.log(data);
      });
    break;
  case 'REX':
    this.http.get('http://192.168.117.107:8080/rest/ScanningOutput/ByDevice/REX')
      .subscribe(data => {
        this.scanningdata = data;
        //console.log(data);
      });
    break;
  default:
    console.log("invalid");
    break;
}

【问题讨论】:

  • 路由应该是一个数组
  • 更新了我的代码。请就更新的代码提出建议。
  • 最初调用 routerLink 时路由工作,但是当我传递其他值并从 GET API 获取数据时,我的视图不会用新数据刷新
  • 交换机在 this.aRoute.params.subscribe 之外。它不会在 this.sub 的每次更新时运行

标签: angular routes nested-routes


【解决方案1】:

你已经在定义路由的地方写了scanning,并且你在routerlink中传递了scan

【讨论】:

  • 最初调用 routerLink 时路由工作,但是当我传递其他值并从 GET API 获取数据时,我的视图不会被新数据刷新。
【解决方案2】:

尝试在订阅部分声明开关:

this.aRoute.params.subscribe(params => { 
        this.sub = params['name'];
        switch (this.sub) {
            case 'All':
                this.http.get('http://192.168.117.107:8080/rest/ScanningOutput/all')
                    .subscribe(data => {
                        this.scanningdata = data;
                        //console.log(data);
                    });
                break;
            ...
            default:
                console.log("invalid");
                break;
        }
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    • 1970-01-01
    • 2021-04-24
    • 2018-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多