Я создаю одностраничное приложение с Angular 7. У меня есть компонент приложения, а в компоненте приложения есть мой компонент Nav и мой Router-Outlet. Когда я изменяю значение в одном из компонентов на выходе маршрутизатора, я могу вызвать общую службу, которая затем отправит данные, измененные в мой компонент Nav. Я могу получить данные там, но мне нужно изменить свойство, показывающее (подписывающееся) данные.
Так как я использую выход маршрутизатора и пытаюсь связаться с компонентом nav за пределами этого, событие emit не будет работать, поэтому мне пришлось идти по маршруту службы.
//Component that has item clicked and the click calls the change
//note this component is populated in the router outlet
onClickSimple(aNumber){
this.sharedService.doSomething(aNumber);
}
//the shared service
doSomething(aNumber) {
console.log(aNumber); //this works
this.nav.onNumberChange(aNumber);
}
// the nav component
onNumberChange(aNumber) {
console.log("nav componenet is pass a value of ");
console.log(aNumber); ///works
this.currentNumber = aNumber; ///// WILL NOT CHANGE THE VALUE ON THE NAV COMPONENT
}
// nav html
<li><p style="color:blue;font-weight:bold">Current Number: {{currentNumber}}</p></li>
Я хочу, чтобы this.currentNumber отражал произошедшее изменение, но не делает этого. Пожалуйста, дайте мне знать ваши мысли, если я пропускаю простое исправление или если я должен рассмотреть другой вариант.
Спасибо.