在角度4的多个组件中捕获事件

时间:2019-04-16 11:47:01

标签: angular angular-forms angular-event-emitter

我有一个称为地址的组件,它在更改一个时要多次渲染家庭住址和办公地址,因此我想更新另一个,以便编写了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);
  }

}

1 个答案:

答案 0 :(得分:1)

您需要使服务以singleton的身份注入:

6号和更高角度的

@Injectable({providedIn: 'root'})
   export class SharedService {
     onMainEvent: EventEmitter = new EventEmitter();
   }

降低:

@NgModule({
  ...
  providers: [UserService],
  ...
})

做这种事情的更可取的方法是使用ngrx或ngxs之类的磁通量体系结构用于角度。