我有一个称为地址的组件,它在更改一个时要多次渲染家庭住址和办公地址,因此我想更新另一个,以便编写了sharedService并使用了eventemmiter。但它捕获的是同一组件而不是其他组件。我期望两次“输入地址”日志
@Injectable()
export class SharedService {
onMainEvent: EventEmitter = new EventEmitter();
}
@Component({ ... })
export class AddressComponent {
onMain: boolean = false;
constructor(service: SharedService) {
service.onMainEvent.subscribe(
(onMain) => {
this.onMain = onMain;
console.log('in Address')
}
);
}
updateAddress(onMain):void {
this.service.onMainEvent.emit(onMain);
}
}
答案 0 :(得分:1)
您需要使服务以singleton的身份注入:
6号和更高角度的
@Injectable({providedIn: 'root'})
export class SharedService {
onMainEvent: EventEmitter = new EventEmitter();
}
降低:
@NgModule({
...
providers: [UserService],
...
})
做这种事情的更可取的方法是使用ngrx或ngxs之类的磁通量体系结构用于角度。