У меня есть BehaviorSubject, который работает при нажатии кнопки, но я пытаюсь выяснить, как ввести поле ввода в компоненте заголовка и вывести его в реальном времени в компоненте вывода на странице, не нажимая кнопкупередавать. Он должен просто передавать, как я печатаю. Любая помощь приветствуется!
search.service.ts
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
@Injectable({ providedIn: 'root' })
export class SearchService{
private messageSource = new BehaviorSubject<string>("default message");
currentMessage = this.messageSource.asObservable();
constructor(){ }
changeMessage(message: string){
this.messageSource.next(message);
}
}
header.ts
import { Component, OnInit, Input } from '@angular/core';
import { SearchService } from './search.service';
@Component({
selector: 'app-header',
templateUrl: './header.component.html',
styleUrls: ['./header.component.css']
})
export class HeaderComponent implements OnInit, OnDestroy{
message: string;
searchField: string;
constructor( private searchService: SearchService ) { }
ngOnInit(){
this.searchService.currentMessage.subscribe(message => this.message = message);
}
newMessage() {
this.searchService.changeMessage(this.searchField);
}
}
Компонент вывода
import { SearchService } from '../header/search.service';
@Component({
selector: 'app-output',
templateUrl: './output.component.html',
styleUrls: ['./output.component.css']
})
export class OutputComponent implements OnInit {
message: string;
constructor(private searchService: SearchService) { }
ngOnInit() {
this.searchService.currentMessage.subscribe(message => this.message = message);
}