angular 4 中多个组件中的事件捕获
event capture in multiple component in angular 4
我有一个名为 address 的组件,它多次呈现家庭地址和办公室地址,在更改一个时我想更新另一个,所以我编写了 sharedService 并使用了 eventemmiter。但它捕获的是同一组件而不是另一个组件..我期待 'in Address' 记录两次
@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);
}
}
您需要将您的服务注入为 singleton:
angular 6 岁及以上
@Injectable({providedIn: 'root'})
export class SharedService {
onMainEvent: EventEmitter = new EventEmitter();
}
较低的:
@NgModule({
...
providers: [UserService],
...
})
更优选的做法是使用通量架构,例如 ngrx 或 ngxs angular。
我有一个名为 address 的组件,它多次呈现家庭地址和办公室地址,在更改一个时我想更新另一个,所以我编写了 sharedService 并使用了 eventemmiter。但它捕获的是同一组件而不是另一个组件..我期待 'in Address' 记录两次
@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);
}
}
您需要将您的服务注入为 singleton:
angular 6 岁及以上
@Injectable({providedIn: 'root'})
export class SharedService {
onMainEvent: EventEmitter = new EventEmitter();
}
较低的:
@NgModule({
...
providers: [UserService],
...
})
更优选的做法是使用通量架构,例如 ngrx 或 ngxs angular。