Я новичок в веб-разработке. Я работаю над проектом Angular. У меня есть два компонента: панель фильтра и панель фильтра . Никто из них не является родителем-ребенком по отношению друг к другу. Я проверил некоторые решения, такие как:
Доступ к методу одного компонента из другого
и многие другие решения в inte rnet.
Я попробовал два подхода:
- @ ViewChild
Служба в angular
Но все равно я получаю ошибку.
ОШИБКА TypeError: "_co.filterPanel не определен"
Вот мой код.
filter-bar.component. html
<button (click)="filterPanel.filterPanelMethod()">Call</button>
filter-bar.component.ts
import { Component, OnInit, ViewChild } from '@angular/core';
import { FilterPanelComponent } from './filter-panel/filter-panel.component';
import { FilterPanelService } from './filter-panel/filter-panel.service';
@Component({
selector: 'app-filter-bar',
templateUrl: './filter-bar.component.html'
})
export class FilterBarComponent implements OnInit {
@ViewChild(FilterPanelComponent, {static : false}) public filterPanel: FilterPanelComponent;
constructor(public filterPanelService: FilterPanelService) {
//filterPanelService.filterPanelMethod();
}
ngOnInit() {
}
}
filter-panel.component.ts
import { Component, OnInit } from '@angular/core';
import {FilterPanelService} from './filter-panel.service';
@Component({
selector: 'app-filter-panel',
templateUrl: './filter-panel.component.html'
})
export class FilterPanelComponent implements OnInit {
constructor(public filterPanelService:FilterPanelService) {
}
filterPanelMethod() {
console.log("I'm filter-panel method");
}
ngOnInit() {}
}
Отправка и получение данных здесь не требуются. Я просто хочу посмотреть, как вызывается метод, а обо всем позабочусь. Я уверен, что я где-то совершаю ужасную ошибку. Я также создал stackblitz . Я боюсь, что я смешал два подхода и запутался. Пожалуйста, поправьте меня.