In Angular 1, I have some ways to communicate between controllers i.e.
1. $rootScope,
2. $scope,
3. $emit,
4. $broadcast
Now In Angular 2, we have different ways to communicate between components.
A parent component and its children share a service whose interface enables bi-directional communication within the family.
The following examples for Services communication,
import {Injectable} from '@angular/core'; @Injectable() export class MyService { constructor() { } }
import { Component } from '@angular/core'; @Component({ selector: 'my-app', templateUrl: './myApp.component.html' }) export class MyAppComponent { }
The following example to calling service from any other component,
import {Component, OnInit} from '@angular/core'; import {MyService} from './app/myService'; @Component({ selector: '<my-component></my-component>', templateUrl: 'app/component.html', providers: [MyService] }) export class MyComponent implements OnInit { constructor(private msInstance: MyService) {} ngOnInit() { this.msInstance.getServices(); } }
Example for Sibling Component Communication,
import { Component, ViewChild, AfterViewInit } from '@angular/core'; import { ListComponent } from './list.component'; import { DetailComponent } from './detail.component'; @Component({ selector: 'app-component', template: '<list-component></list-component><detail-component></detail-component>', directives: [ListComponent, DetailComponent] }) class AppComponent implements AfterViewInit { @ViewChild(ListComponent) listComponent:ListComponent; @ViewChild(DetailComponent) detailComponent: DetailComponent; ngAfterViewInit() { // afther this point the children are set, so you can use them this.detailComponent.doSomething(); } }
For live Result https://embed.plnkr.co/h25J1Mv6ioUWVX5g6t5M/
I hope you are enjoying with
this post! Please share with you friends. Thank you!!