2017-06-22 63 views
0

我試圖將一個組件的變量傳遞給另一個組件。我做的,通過使用一項服務:如果數據獲取功能而改變將數據從一個組件傳遞到另一個角度時的服務變量2

import { Injectable } from '@angular/core'; 
    import { Subject } from 'rxjs/Subject'; 


    @Injectable() 
    export class SharedService { 
     // private questionNumber = new Subject<number>(); 
     // questionNumber$ = this.questionNumber.asObservable(); 
     questionNumber : number; 
     publishData(number:number) { 
     this.questionNumber = number; 
     console.log(this.questionNumber,'publish'); 
     } 

    getQuestionData(){ 
    console.log(this.questionNumber,'get'); 
    return this.questionNumber; 
    } 

    constructor() { } 

} 

「publishData」它在控制檯將當前變量值:

publish Variable

但如果我嘗試如同其不改變

Undefined get

組分1(E訪問該變量它仍然是不確定的xcerpt):

import { Component, OnInit } from '@angular/core'; 
import { ViewEncapsulation } from '@angular/core'; 
import { SharedService } from '../shared.service'; 

@Component({ 
    selector: 'app-main-quiz', 
    templateUrl: './main-quiz.component.html', 
    styleUrls: ['./main-quiz.component.css'], 
    encapsulation: ViewEncapsulation.None, 
    providers: [SharedService] 
}) 
export class MainQuizComponent implements OnInit { 

    constructor(private _sharedService: SharedService){ 
    this._sharedService = _sharedService; 
    } 

    updateQuestion(){ 
    this._sharedService.publishData(this.questionNumber); 
    }; 

子項目2:

import { Component, OnInit, Input } from '@angular/core'; 
import { ViewEncapsulation } from '@angular/core'; 
import { SharedService } from '../shared.service'; 

@Component({ 
    selector: 'app-win-page', 
    templateUrl: './win-page.component.html', 
    styleUrls: ['./win-page.component.css'], 
    encapsulation: ViewEncapsulation.None, 
    inputs: ['questionNumber'], 
    providers: [SharedService] 
}) 
export class WinPageComponent implements OnInit { 

    constructor(private _sharedService : SharedService) { 
    this._sharedService = _sharedService; 
    this.questionNumber = this._sharedService.getQuestionData(); 
    } 

    questionNumber : number; 

    ngOnInit() { 

    } 

    ngOnChanges(){ 
    this.questionNumber = this._sharedService.getQuestionData(); 
    } 

} 

爲什麼不變量更新?

感謝您的幫助!

+0

你怎麼稱呼它?也許你在變量設置之前得到了變量? –

+0

在我的第二個組件中:ngOnChanges(){this.questionNumber = this._sharedService.getQuestionData(); } – Snixells

+2

你可以分享組件代碼嗎? (用他們的'@ Component'註釋) – echonax

回答

相關問題