我有两个应该通过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)
在第二课中,事件被触发。当我从第一课调用它时,为什么它不起作用?
答案 0 :(得分:0)
不要在组件上提供服务One
。这样,每个组件实例都将获得自己的One
实例。如果您在公共父级(AppComponent
)提供,那么他们将获得共享实例。
Angular2 DI为每个提供商维护一个实例(单例)。