Если ваши компоненты вовремя, более простой способ - использовать @Input и передать ваш компонент в ссылочную переменную.Например, ваш app.component похож на
<hello #hello name="{{ name }}"></hello>
<nav-bar [component]="hello"></nav-bar>
// Ваша навигационная панель похожа на
@Component({
selector: 'nav-bar',
template: `<button (click)="click()">click me</button>`,
styles: [`h1 { font-family: Lato; }`]
})
export class NavBarComponent {
@Input()component:any
click()
{
console.log(this.component.variable)
}
}
"Классика" - это использование сервиса.Ваш сервис может быть как
@Injectable()
export class DataService {
private mySubjectSource = new Subject<any>();
myObservable=this.mySubjectSource.asObservable();
constructor(){}
sendValue(value:any)
{
this.mySubjectSource.next(value);
}
}
Тогда ваш компонент использует этот сервис:
Компонент, который выдает значение
export class NavBarComponent {
constructor(private service:DataService){}
click2()
{
this.service.sendValue("save data")
}
}
Компонент, который получает событие
export class HelloComponent implements OnInit {
constructor(private service:DataService){ }
ngOnInit()
{
this.service.myObservable.subscribe(res=>{
console.log(res);
})
}
}
в этом стеке бликов Я ставлю двумя способами
Выберите, где вы хотите сделать отправку: вы получите значение формы или в формекогда вы отправляете событие из nav-