Angular 8: передача данных через локальный сервис между компонентами в отдельных модулях - PullRequest
0 голосов
/ 22 февраля 2020

У меня есть эта локальная служба

  private messageSource = new BehaviorSubject('default message')
  public currentMessage = this.messageSource.asObservable();

  constructor() { }

  changeMessage(message: string) {
    this.messageSource.next(message)
  }

}

Дочерний компонент внутри основного модуля

@Output('message') message= new EventEmitter<string>()
@Output('movies') movies =new EventEmitter<any>()
storedmovies:any
  constructor(private localService: LocalService, private movieService: MoviesService) { }

  ngOnInit() {
    this.movieService.getStoredMovies().subscribe(data=>{
      this.storedmovies=data
    })
    this.localService.currentMessage.subscribe(data=>console.log(data))

  }

sendMessage(){
  this.message.emit(this.storedmovies);
}

Дочерний t html

<button class="btn btn-danger" (click)="sendMessage()">Send Message</button>

Компонент Admin внутри Admin module

TS

 ngOnInit() {
    this.localService.currentMessage.subscribe(data=>console.log(data))
    console.log(this.localService.changeMessage('new message'))
  }
  receivedMessage($event) {
    console.log($event)
  }

HTML

<app-child
(message)="receivedMessage($event)"> -> not recognized

Но в приложении appModule, в котором зарегистрирован дочерний элемент, есть его в массиве экспорта

@NgModule({
  declarations: [
    //etc
    ChildComponent,
  ],
  imports: [
    /etc
  ],
  exports:[
    ChildComponent
  ],

так что мне нужно сделать, чтобы дочерний комп onet был распознан в модуле администратора? Нужно ли импортировать компонент? Я ехал в Алреди, и это не сработало ...

1 Ответ

1 голос
/ 22 февраля 2020

В соответствии со структурой модуля, которую вы указали в своем вопросе, я понимаю, что идея будет заключаться в следующем:

  1. Объявление и экспорт вашего дочернего компонента в его модуль (CoreModule) вместо AppModule.

  2. И затем импортируйте этот модуль в модуль администратора.

Я создал этот пример , где вы можете его увидеть за работой. https://stackblitz.com/edit/angular-ebetqi

Angular Документы очень хороши, взгляните на эти 2 ресурса, связанные с модулями и как их структурировать ...

  1. https://angular.io/guide/architecture-modules
  2. https://angular.io/guide/styleguide#application -структура-и-модули ng
...