2017-06-04 7 views
0

現在、私はAngular4を使用しています。今私は問題があります。私はHeaderComponentにタイトルを変更するには、このHeaderServiceを持っている:イベントは送出されません

import {EventEmitter, Injectable, Output} from "@angular/core"; 

@Injectable() 
export class HeaderService { 

    @Output() 
    public fire: EventEmitter<String> = new EventEmitter(); 

    constructor() { 
    } 

    public changeTitle(title: string) { 
     console.log("Want to change title to: " + title); 

     this.fire.emit(title); 
    } 

    public getTitle(): EventEmitter<String> { 
     return this.fire; 
    } 

} 

をそして、これは私のHeaderComponent次のとおりです。

私はタイトルを変更するには、このサービスを使用し、私の HomeComponent
import {Component, EventEmitter, OnInit} from "@angular/core"; 
import {HeaderService} from "../../services/header.service"; 

@Component({ 
    selector: 'header', 
    templateUrl: './header.component.html' 
}) 
export class HeaderComponent implements OnInit { 

    private title: string = "felixoi.net"; 
    private subscription: EventEmitter<String>; 

    constructor(private headerService: HeaderService) { 
    } 

    ngOnInit(): void { 
     console.log("Loading HeaderComponent"); 

     this.subscription = this.headerService.getTitle().subscribe((title: string) => { 
      console.log("Changed title to: " + title); 

      this.title = title; 
     }); 
    } 
} 

import {Component, OnInit} from '@angular/core'; 
import {HeaderService} from "../shared/services/header.service"; 

@Component({ 
    selector: 'home', 
    templateUrl: './home.component.html' 
}) 
export class HomeComponent implements OnInit { 

    constructor(private headerService: HeaderService) { 
    } 

    ngOnInit(): void { 
     console.log("Loading HomeComponent"); 

     this.headerService.changeTitle("Home"); 
    } 

} 

私は私のTokenServiceでまったく同じ電話を持っていますが、このコンポーネントに同じコードが動作していません。

import { Component } from '@angular/core'; 
import {HeaderService} from "../shared/services/header.service"; 

@Component({ 
    selector: 'token', 
    templateUrl: './token.component.html' 
}) 
export class TokenComponent implements OnInit { 

    constructor(private headerService: HeaderService) { 
    } 

    ngOnInit(): void { 
     console.log("Loading TokenComponent"); 

     this.headerService.changeTitle("Tokens"); 
    } 

} 

私は自分のコードにいくつかのデバッグメッセージを作成しました。

Loading HeaderComponent 
Loading HomeComponent 
Want to change title to: Home 
Changed title to: Home 
Loading TokenComponent 
Want to change title to: Tokens 

それはイベントがTokenComponentに放出されていませんが、私はなぜ知らないことを示しています。これは、コンソール出力です。

+0

提示されたコードは私によく見えます。私はHomeComponentを削除して、TokenComponentが正しく動作するかどうかを確認したいと思います。あなたのアプリでプランナーを作成して投稿することは役に立ちます。 –

答えて

0

問題が見つかりました。

モジュールが大きく異なるインスタンスが購読して存在していたとも異なるエミッタ、乗算回数を輸入しました。

関連する問題