HttpInterceptorからイベントを送信しようとしています。私のイベントサービスの角度5のHttpInterceptorからイベントを放出する方法
コード:
import { EventEmitter } from '@angular/core';
export class Message {
constructor(public name:string, public data:any){
}
}
export class NotifyService {
dispatcher: EventEmitter<any> = new EventEmitter();
constructor() {}
emitMessageEvent(name:string, data:any){
let message = new Message(name,data);
this.dispatcher.emit(message);
}
getEmitter() {
return this.dispatcher;
}
コンポーネントイベント
import { Component } from '@angular/core';
import { Router } from '@angular/router';
import { NotifyService } from './services/notify.service';
@Component({
...
providers: [ NotifyService ]
})
export class AppComponent {
subscription: any;
constructor(private router: Router, private notifyService: NotifyService) {
}
ngOnInit() {
this.subscription = this.notifyService.getEmitter()
.subscribe(item => this.showAppLevelAlarm(item));
}
private showAppLevelAlarm(_notify: any): void {
// this.message = _notify.msg;
console.log(_notify);
}
}
そして、私のHttpInterceptor受け取り:
import { NotifyService } from '../services/notify.service';
@Injectable()
export class ApiInterceptor implements HttpInterceptor {
constructor(public notifyService: NotifyService) {}
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(req).do(event => {
return event;
},
error => {
this.notifyService.emitMessageEvent('showAppLevelAlert', error.error);
})
は私が理解して助けを理由から送信されたイベントHttpInterceptorはAppComponentによって受信されません。しかし、別のコンポーネントからイベントを送信すると、AppComponentはイベントを受け取ります。
http://blog.bogdancarpean.com/how-to-watch-for-changes-an-arrayobject-on-angular-2/
に、ここで説明したように、すべてのイベント・エミッターの最初、この間違っについてうとしている