#asp.net-mvc #angular #asp.net-web-api #angular-ui-router #angular-directive
#asp.net-mvc #angular #asp.net-веб-api #angular-ui-router #angular-директива
Вопрос:
<container>
<navbar>
<summary></summary>
<child-summary><child-summary>
</navbar>
<content></content>
</container>
Итак, у меня есть выбор, который отправляет значение в и .
Метод onSelect хорошо запускается с (изменением) внутреннего компонента.
Итак, я попробовал использовать директивы @Input, @Output и @EventEmitter, но я не вижу, как получить событие как @Input компонента, если только не использовать родительский / дочерний шаблон. Все примеры, которые я основал, имеют отношение между компонентами.
РЕДАКТИРОВАТЬ: Пример с BehaviorSubject не работает (все подключенные службы к API работают хорошо, только observable запускается при запуске, но не при изменении значения select)
Ответ №1:
Начните с создания BehaviorSubject в сервисе
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
@Injectable()
export class DataService {
private messageSource = new BehaviorSubject("default message");
currentMessage = this.messageSource.asObservable();
constructor() { }
changeMessage(message: string) {
this.messageSource.next(message)
}
}
Ответ №2:
Я создаю образец для отправки сообщения между компонентами с помощью BehaviorSubject
@Injectable()
export class MyService {
private messageSource = new BehaviorSubject<string>('service');
currentMessage = this.messageSource.asObservable();
constructor() {
}
changeMessage(message: string) {
this.messageSource.next(message)
}
}
Вы можете обратиться к https://stackblitz.com/edit/behavior-subject-2019