Я пытаюсь написать службу, в которой некоторые события запускаются с помощью соответствующих методов в ней, чтобы любой компонент в моем приложении мог ее прослушивать.
Итак, я создал настраиваемое событие в сервисе следующим образом
export class EventsService {
@Output() expandNav: EventEmitter<Number> = new EventEmitter();
trigExpandNav() {
this.expandNav.emit(1);
}
constructor() { }
}
Затем я включил эту службу в качестве поставщика в свой компонент, в котором я хотел передать это событие с помощью метода trigExpandNav следующим образом:
import {
Component,
OnInit,
Output,
EventEmitter
} from '@angular/core';
import {
EventsService
} from '../../services/events.service';
@Component({
selector: 'app-header',
templateUrl: './header.component.html',
styleUrls: ['./header.component.css'],
providers: [EventsService]
})
export class HeaderComponent implements OnInit {
eventsService: EventsService;
fun() {
this.eventsService.trigExpandNav();
}
constructor() {}
ngOnInit() {}
}
Но я получаю эту ошибку
ERROR in src/app/layout/header/header.component.ts(21,7): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'EventEmitter<Number>' has no compatible call signatures.
Я не знаю, где я делаю это неправильно, поэтому, пожалуйста, помогите и заранее спасибо.
ВАЖНЫЙ
Я пытаюсь достичь:
Предположим, у меня есть 2 компонента. Я хочу вызвать событие из 1-го компонента при нажатии кнопки или ссылки и прослушать это событие во 2-м компоненте из файла html, например, этого sda
Для этого я создал сервис, в котором я испускаю событие через метод. Дело в том, что он работает как положено.
eventsService.trigExpandNav()
? ИлиeventsService.expandNav.emit()
? - person user184994   schedule 17.11.2018