I have 2 components : headerComponent and searchPageComponent.
Whatever the value we enter on header component search bar, the search page component should get the value.
header.component.html
<form class="form-inline md-form form-sm">
<input class="form-control form-control-sm mr-3 w-75" id="searchString" type="text"
placeholder="Search" [(ngModel)]="searchValue" name="searchString" (ngModelChange)="onChange($event)">
<button class="headerSearchbarBtn" id="btnSearch" routerLink="/searchResult">
<span class="headerSearchbarIcon"></span>
</button>
</form>
header.component.ts
export class HeaderComponent implements OnInit {
searchValue: string;
constructor(private router: Router) { }
ngOnInit() {
}
onChange($event) {
this.searchValue = $event;
}
}
Search.component.ts
export class SearchComponent implements OnInit {
ngOnInit() {
console.log(this.searchValue); // 'this.searchValue' => value should come from header.compomnent.ts
}
}
There is no parent child relation here, I want to know how the data is passed from one component to other, and Why cant we directly access the input field box value in different components in Angular?