// Part of service
public someEvent: EventEmitter<number> = new EventEmitter();
....
// Component
@Component({
selector: 'some-component',
template: `...`
})
export class SomeComponent {
constructor(public service: Service) {
this.service.someEvent.subscribe((x) => {
// Do something
});
}
}
SomeComponent
се показва в /
маршрут. Когато навигирам до различен маршрут в моето приложение и се върна отново, SomeComponent
ще се абонира отново за събитието, причинявайки обратното извикване да се задейства два пъти. Как да се абонирате за събитието веднъж или да се отпишете при унищожаване на компонента и да се абонирате отново?
// Can't subscribe after.
ngOnDestroy() {
this.service.someEvent.unsubscribe();
}
ngOnInit
се задейства всеки път точно като функцията на конструктора, но изчаква дъщерните компоненти да се инициализират . - person Eggy   schedule 17.01.2016OnInit
е за обвързване, няма да работи за вас... опитайтеCanReuse
- person Sasxa   schedule 17.01.2016EventEmitter
не трябва да се използва в услуги, а само за@Output()
компоненти и директиви. Вместо това използвайтеObservable
илиSubject
. - person Günter Zöchbauer   schedule 28.09.2016