Skip to main content

Nested Component - Passing Data to a Child Component


If you want to pass data to a nested component you have to use the @Import decorator. You can find this decorator at @angular/core

import { Input } from '@angular/core';

Now I show you how you can use this decorator.
In my example I want to pass a counter from a Shopping List to a Shopping Basket Component
In the end, the shopping basket should look like this:

The Shopping Basket shows the number of items in an array (Shopping List). Everytime we put an item in the basket we count the items in the array

this.counter = this.selectedProducts.length

Now we have to pass the counter to the ShoppingBasketComponent by using property binding

<app-shopping-basket [count]="counter"></app-shopping-basket>

After this we can use the input decorator at the child component
export class ShoppingBasketComponent implements OnInit {
@Input() countany

  constructor() { }

  ngOnInit() {
  }

}

And we can use it in the HTML
  <h2>{{count}}</h2>

Summary:

Passing data from a parent to a child component is very easy. You only use property binding at the parent component and the input decorator at the child component.




Comments

Popular posts from this blog

Angular 2: Multiple instances in the same Application

Requirement:  Use multiple Root-Components in the same Application  This Root-Components use the same Implementations and Services Display the Root-Components on the same Single-Page Solution: App-Module preparation: import { BrowserModule, DOCUMENT } from '@angular/platform-browser'; import { NgModule, Inject, Component } from '@angular/core'; export class AppModule { private browser_document; ngDoBootstrap(appRef){ if(this.browser_document.getElementsByTagName('app-root1').length > 0){appRef.bootstrap(AppComponent1);} if(this.browser_document.getElementsByTagName('app-root2').length > 0){appRef.bootstrap(AppComponent2);} } constructor(@Inject(DOCUMENT) private document: any){ this.browser_document = document; } } Service preparation: Angular 2 has two options to provide a service. 1. Single instance For a multiple implementation of more Root-Components we need the second opt...

Nested Component - Passing Data to a Parent Component

In my previous article  Nested Component - Passing Data to a Child Component , I explained how to pass data from a parent component to a child component.  In this article I will describe how you do the other way, passing data from a child to a parent component. As you know, there is a decorator called @Input for passing data to the child, and of course there is another decorator to passing the data to the parent. This decorator is called @Output. Very obvious. So we have to import this decorator to your parent component import  {  Output  }  from   '@angular/core' ; Now we can use this decorator. The property type of the decorator must be an event. The data to pass becomes the event payload. So we have to import the EventEmitter, too, because in Angular an event is defined with an EventEmitter object. import  {  Output ,  EventEmitter  }  from   '@angular/core' ; Next step is to create a new instance of th...

Utilize 3rd party Javascript libraries in your Angular 2+ application with CLI

Not everything is available as a native Typescript library. Due to that sometimes you might need to use 3rd party libraries. After creating a new project with Angular CLI you will experience that VS Code does not know any libraries you have imported in the header tag and the compiler complains when you try to use this libraries. The reason is: You are missing the typings. The typings describe the functionality of the libary and make that available in your project through intellisense and for the compiler. But before you start creating your own typings do the following checks: 1. Does the vendor of the library provide the typings? If yes, install through npm 2. Are the typings available on definitely typed ? If yes, then take it from there. If this is not the case then you can do your own typings. If you want to do that properly, then you should write the complete set of typings for the library and upload to definitely typed to provide it for the community. OK, this might b...