0

ルート パラメータを使用して子モジュールにルーティングしようとしています。私の app.routes は次のようになります。

import { Routes, RouterModule } from '@angular/router';

const appRoutes: Routes = [
  { path: 'cell', loadChildren: './cell/cell.module#CellModule', pathMatch: 'prefix'}
];

export const appRoutingProviders: any[] = [];
export const routing = RouterModule.forRoot(appRoutes);

私の子コンポーネント(セル)には次のルートがあります:

import { ModuleWithProviders } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';

import { CellComponent } from './cell.component';

const cellRoutes: Routes = [
    { path: ':id', component: CellComponent, pathMatch: 'full' }
];

export const cellRouting: ModuleWithProviders = RouterModule.forChild(cellRoutes);

次のようになりCellComponentます。

export class CellComponent implements OnInit {
  @Input()
  dep: string;

  constructor(
    private route: ActivatedRoute) { }

  ngOnInit() {
    this.route.params.forEach((params: Params) => {
      this.dep = params['id'];
      console.log(this.dep);
    });

  }
}

/cell/2ルートを呼び出してコンソールにアクセスできることを期待していますが2、その呼び出しを行うとエラーが発生します。

TypeError: 未定義のプロパティ '長さ' を読み取ることができません

これは、未定義のルートを使用しているためと思われます。呼び出すだけで/cell、コンポーネントが正常にロードcellされ、コンソールに出力されます。ルーターがルートをパラメーターとして解釈するのはなぜですか?

4

1 に答える 1

0

以下のコードを使用して ID を取得します。

import { ActivatedRoute, Router } from '@angular/router';
constructor(public route: ActivatedRoute, ...) {
}
ngOnInit() {
    this.route
        .params
        .subscribe(params => {
            this.id= params['id'];
    });
}
于 2016-12-02T17:09:23.957 に答える