可观察不是触发

Observable isnt triggering

本文关键字:观察      更新时间:2023-09-26

我有两个组件应该通过Observable()连接。

首先,我宣布

@Injectable()
export class One{
    private changeConfirmed = new Subject<boolean>();
    changeConfirmed$ = this.changeConfirmed.asObservable();
    public init$: EventEmitter<boolean>;
    registerChangeConfirmed(category:boolean){
        alert('sending')
        this.changeConfirmed.next(category);
    }
    onMsg(){
        this.registerChangeConfirmed(true);
    }
}

onMsg事件绑定到模板

在第二个中

Import { One } from './pat/to/it'
@Component({
    providers:[One]
})
export class two{
    constructor( private childClass : One ){
        this.childClass.changeConfirmed$.subscribe( x => {alert(x)})
    }
}

但是,不会发出该事件。但当我在第二类而不是第一类中发出事件时=我包括

this.childClass.registerChangeConfirmed(true)

在第二类中,事件被触发。当我从第一类调用它时,为什么它不起作用?

不要在组件上提供服务One。这样,每个组件实例都将获得自己的One实例。如果您在公共父级(AppComponent)提供它,那么它们将获得一个共享实例。

Angular2DI为每个提供程序维护一个实例(singleton)。