2017-03-03 48 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試圖讓它們在之前一樣。

相關問題