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
に放出されていませんが、私はなぜ知らないことを示しています。これは、コンソール出力です。
提示されたコードは私によく見えます。私はHomeComponentを削除して、TokenComponentが正しく動作するかどうかを確認したいと思います。あなたのアプリでプランナーを作成して投稿することは役に立ちます。 –