使用事件总线实现订阅主题时的未定义值

问题描述 投票:1回答:1

我创建了一个EventBusServiceEventData

export class EventData {
    public eventName: string;
    public event: any;

    constructor(eventName: string, event: any) {
        this.eventName = eventName;
        this.event = event;
    }
}


@Injectable({providedIn: 'root'})
export class EventBusService {
    private subject = new Subject();

    public emit(event: EventData) {
        this.subject.next(event);
    }

    public on(eventName: string, action: any): Subscription {
        return this.subject.pipe(
            filter( (e: EventData) => e.eventName === eventName),
            map( (e: EventData) => e['value'])).subscribe(action);

    }
}

这是我发出事件的方式

this.eventBusService.emit(new EventData('SelectDefaultList', list));

值已经发出,但是我在订阅/收听undefined时总是得到EventBusService值>

ngOnInit() {
    this.eventBusService.on('SelectDefaultList', (list: List) => {
        console.log('hello' + list);
    });
}

这两个组件在一个模块下,我将EventBusService声明为提供程序。

谢谢〜

我创建了EventBusService和EventData导出类EventData {public eventName:string;公共活动:任何;构造函数(eventName:字符串,事件:任何){this.eventName = ...

angular
1个回答
1
投票

如果EventData

© www.soinside.com 2019 - 2024. All rights reserved.