2017-03-03 84 views
2

我试图使用服务将数据从“第一”组件传递到“第二”组件。但是,当我尝试检索'第二'组件中的数据时,它是未定义的。将数据传递到使用角度2服务的其他组件

这是我的代码。

import { Component, OnInit } from '@angular/core'; 
import {Router} from "@angular/router"; 
import { testData } from '../model/Data'; 
@Component({ 
    selector: 'app-first', 
    templateUrl: './first.component.html', 
    styleUrls: ['./first.component.css'] 
}) 
export class FirstComponent implements OnInit { 
public constructor(private router: Router,private mydata:testData) { 
    this.mydata={firstname:"Amit",lastname:"Kumar",Mobile:"12345"}; 
} 
ngOnInit() { } 
} 

因为我在构造函数中设置了'myData'。这是'第二'组件中的代码。

import { Component, OnInit } from '@angular/core'; 
import {Router} from "@angular/router"; 
import { testData } from '../model/Data'; 
@Component({ 
    selector: 'app-second', 
    templateUrl: './second.component.html', 
    styleUrls: ['./second.component.css'] 
}) 
export class SecondComponent implements OnInit { 
    public constructor(private mydata:testData) { 
    console.log(this.mydata.firstname); 
    } 
    ngOnInit() {} 
} 

Data.ts

import { Injectable } from '@angular/core'; 
@Injectable() 
export class testData{ 
    public firstname: string; 
    public lastname: string; 
    public Mobile:string; 
    public constructor() { } 
} 

,并更新了我的app.module.ts文件

@NgModule({ 
... 
providers: [testData], 
    bootstrap: [AppComponent] 
}) 

'二' 成分不是 '第一' 的子组件。

+1

https://angular.io/docs/ts/latest/cookbook/component-communication.html – echonax

+1

@echonax:那些例子对于有父母子女关系的组成部分。 –

+1

标题是有点误导,但你的答案是_Parent和儿童沟通通过service_ – echonax

回答

2

当你做这个任务

this.mydata={firstname:"Amit",lastname:"Kumar",Mobile:"12345"}; 

你没有指定你的服务的属性。您正在将您的mydata字段分配为另一个对象。

我想你的意思做的是,

this.mydata.firstname = "Amit"; 
this.mydata.lastname = "Kumar"; 
this.mydata.Mobile = "12345"; 

如果你想指整个对象,你应该在文档中使用Subject,如:

https://angular.io/docs/ts/latest/cookbook/component-communication.html

注意:这种方法在某些情况下仍然可能不起作用;就像FirstComponent不能足够快地设置字段并且SecondComponent试图让它们在之前一样。

相关问题