当前位置: 首页 > 知识库问答 >
问题:

角度2:将数据传递到路由?

东门阳飇
2023-03-14

我正在研究这个angular2项目,其中我使用ROUTER_DIRECTIVES从一个组件导航到另一个组件。

有两个组件。i、 例如,PagesComponent

我想从PagesComponent导航到DesignerComponent。

到目前为止其路由正确但我需要通过

我尝试使用RouteParams,但它的获取页面对象未定义

下面是我的代码:

页面.组件. ts

import {Component, OnInit ,Input} from 'angular2/core';
import { GlobalObjectsService} from './../../shared/services/global/global.objects.service';
import { ROUTER_DIRECTIVES, RouteConfig } from 'angular2/router';
import { DesignerComponent } from './../../designer/designer.component';
import {RouteParams} from 'angular2/router';

@Component({
    selector: 'pages',    
    directives:[ROUTER_DIRECTIVES,],
    templateUrl: 'app/project-manager/pages/pages.component.html'
})
@RouteConfig([
  { path: '/',name: 'Designer',component: DesignerComponent }      
])

export class PagesComponent implements OnInit {
@Input() pages:any;
public selectedWorkspace:any;    
constructor(private globalObjectsService:GlobalObjectsService) {
    this.selectedWorkspace=this.globalObjectsService.selectedWorkspace;                    
}
ngOnInit() { }   
}

在html中,我正在执行以下操作:

<scrollable height="300" class="list-group" style="overflow-y: auto; width: auto; height: 200px;" *ngFor="#page of pages">
    {{page.name}}<a [routerLink]="['Designer',{page: page}]" title="Page Designer"><i class="fa fa-edit"></i></a>
</scrollable>

在 DesignerComponent 构造函数中,我完成了以下操作:

constructor(params: RouteParams) {
    this.page = params.get('page');
    console.log(this.page);//undefined
}

到目前为止,它路由正确到设计器,但是当我尝试在设计器中访问页面对象时,它显示为未定义。任何解决方案?

共有3个答案

澹台承
2023-03-14

您可以这样做:

app-routing-modules.ts:

import { NgModule                  }    from '@angular/core';
import { RouterModule, Routes      }    from '@angular/router';
import { PowerBoosterComponent     }    from './component/power-booster.component';


export const routes: Routes = [
  { path:  'pipeexamples',component: PowerBoosterComponent, 
data:{  name:'shubham' } },
    ];
    @NgModule({
      imports: [ RouterModule.forRoot(routes) ],
      exports: [ RouterModule ]
    })
    export class AppRoutingModule {}

在上述路径中,我想通过一个pipeexamples路径将数据发送到PowerBoosterComponent。现在我可以在PowerBoosterComponent中接收这些数据,如下所示:

power-booster-component.ts

import { Component, OnInit } from '@angular/core';
import { Router, ActivatedRoute, Params, Data } from '@angular/router';

@Component({
  selector: 'power-booster',
  template: `
    <h2>Power Booster</h2>`
})

export class PowerBoosterComponent implements OnInit {
  constructor(
    private route: ActivatedRoute,
    private router: Router

  ) { }
  ngOnInit() {
    //this.route.snapshot.data['name']
    console.log("Data via params: ",this.route.snapshot.data['name']);
  }
}

所以你可以通过<代码>数据this.route.snapsh

穆景辉
2023-03-14

它在角2.1.0的变化

In something.module.ts

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { BlogComponent } from './blog.component';
import { AddComponent } from './add/add.component';
import { EditComponent } from './edit/edit.component';
import { RouterModule } from '@angular/router';
import { MaterialModule } from '@angular/material';
import { FormsModule } from '@angular/forms';
const routes = [
  {
    path: '',
    component: BlogComponent
  },
  {
    path: 'add',
    component: AddComponent
  },
  {
    path: 'edit/:id',
    component: EditComponent,
    data: {
      type: 'edit'
    }
  }

];
@NgModule({
  imports: [
    CommonModule,
    RouterModule.forChild(routes),
    MaterialModule.forRoot(),
    FormsModule
  ],
  declarations: [BlogComponent, EditComponent, AddComponent]
})
export class BlogModule { }

要在编辑组件中获取数据或参数,请执行以下操作:

import { Component, OnInit } from '@angular/core';
import { Router, ActivatedRoute, Params, Data } from '@angular/router';
@Component({
  selector: 'app-edit',
  templateUrl: './edit.component.html',
  styleUrls: ['./edit.component.css']
})
export class EditComponent implements OnInit {
  constructor(
    private route: ActivatedRoute,
    private router: Router

  ) { }
  ngOnInit() {

    this.route.snapshot.params['id'];
    this.route.snapshot.data['type'];

  }
}
柳鸿博
2023-03-14

不能使用路由器参数传递对象,只能使用字符串,因为它需要反映在URL中。无论如何,使用共享服务在路由组件之间传递数据可能是一种更好的方法。

旧路由器允许传递数据,但新(RC.1)路由器尚不允许。

使现代化

< code>data在< code>RC.4中重新引入,我如何在使用路由时在Angular 2组件中传递数据?

 类似资料:
  • 我在角度4中使用路由时遇到了一点问题。你知道,当我尝试使用将数据从一个组件传递到另一个组件时,我刚刚收到了。 组成部分 界面 发送方法

  • 在我的Angular 2路由的一个模板(FirstComponent)中,我有一个按钮 first.component.html 我的目标是实现: 按钮点击->route to另一个组件,同时保留数据,而不使用另一个组件作为指令。 这是我试过的... 第一种方法 在同一个视图中,我存储、收集基于用户交互的相同数据。 First.Component.TS 通常通过ID路由到SecondCompone

  • 我正在使用AngularMaterial2的对话框。 我想将数据传递给打开的组件。以下是单击按钮打开对话框的方式 在文档页面上有数据属性,但我在已安装的软件包中检查了MdDialogConfig。 配置类中没有数据属性。 现在我如何通过数据的访问?

  • 问题内容: 我已经在Angular 2中创建了一个单页抵押计算器应用程序,它对我来说就像一个学习游乐场(试图让更多的人习惯于当前在工作中使用的技术堆栈)…它运行在http://www.mortgagecalculator123.com如果你想看看。如果您想查看它,可以在页面上通过Fork Me链接将其开源。 无论如何,我想做的就是能够直接从URL将变量传递到我的应用程序,以便我的Angular 2

  • 问题内容: 我想将一些数据传递给$ mdDialog。实际上,我在一个单独的文件中有两个控制器。这是我的控制器代码 我想tp将profileId传递给profileController并显示配置文件数据。在配置文件控制器中,我以此获取数据 但是这个错误出现在控制台中 这是什么错误以及如何解决? 问题答案: 我添加了配置文件模板,这是由于错误。通过删除它,我的问题解决了。

  • 我有一个服务,在构造函数中我运行一个方法来获取一些数据。我可以看到数据,然后将其传递给预定义的变量。 这样地: 虽然我已经将值分配给配置变量,并且可以看到它是从构造函数内部的方法传递的,但是当我在另一个方法上尝试同样的事情时,我得到了未定义的。 我怎样才能解决这个问题?