{"componentChunkName":"component---src-templates-post-js","path":"/https/reactgo.com/angular-components-tutorial/","result":{"data":{"markdownRemark":{"html":"<p>In this tutorial, we are going to learn about what is a component and how to create new components in\nangular.</p>\n<blockquote>\n<p>Note: In the last tutorial, we have created our <a href=\"/angular-intro-tutorial-start/\">angular project</a> by using cli</p>\n</blockquote>\n<h2 id=\"what-is-a-component\"><a href=\"#what-is-a-component\" aria-label=\"what is a component permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What is a Component?</h2>\n<p>A component is a reusable piece of UI where we can create once and reuse throughout our app.</p>\n<p><a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/71c178611b1e674534e559548f8d52f7/2bef9/angular-components-live-example.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block;  max-width: 1000px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 54.800000000000004%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB1UlEQVQoz4WSWU/cMBhF5///oT5VVR8AqQIKDFXVQXQIsyQZO4kdb1nnVPaAxPShjXTkz9v1vbEXr+ULUlVYF5B1g6wailLwkm3IXjess1eK8oCoaoQ85yAlQlYchKSqFcv7OxafLr/w+eqKr5c3rPOKsrHINlCZPlHbnipiOoQOH/DUekLoARHXupnb2zsWj6sNy1XG/a81WdHQDyN1XXM4HJBSUhRFquPYPM9M08Q4jXCEtf/J9dOSi29LLq4feFhlLHLlKVQgV4F9bRmmGWMddaNQukVWdaobpbHOp7nWWMZhRnaC5e9nvv945uZxxeNTxmIjWt7ZihapDNoFWtehjKf1HdoGtOtw3Xiin3DdgHETeX0yk0w1nsVWGiJRcFcZjscjqqkpipzddkOR79ltt+T5nr4LjENPFwLT0DPNM1t5buhMMLbKBnw/4vuJMMzJUawj0XV0G53HFNH1+95N0jkTPA1YH9J/2+725EXJPi/Ss4it84H5COM0M81HQj/+S/AUOS70IaCUpjUGpTW6bVPfOpfmjLUMw8AwzmfpPgi+nfB2KTGSsp6mdYnYN75PF5Riu5D6/4ncspMmxWm1pqoqyrJMCCHSG/z7G8Yp7fno8A9+ekEZ5t7BAQAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n    ></span>\n    <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;box-shadow:rgba(23,43,99,.2) 0 7px 28px; white;\"\n        alt=\"angular-components-live-example\"\n        title=\"\"\n        src=\"/static/71c178611b1e674534e559548f8d52f7/00d43/angular-components-live-example.png\"\n        srcset=\"/static/71c178611b1e674534e559548f8d52f7/63868/angular-components-live-example.png 250w,\n/static/71c178611b1e674534e559548f8d52f7/0b533/angular-components-live-example.png 500w,\n/static/71c178611b1e674534e559548f8d52f7/00d43/angular-components-live-example.png 1000w,\n/static/71c178611b1e674534e559548f8d52f7/2bef9/angular-components-live-example.png 1024w\"\n        sizes=\"(max-width: 1000px) 100vw, 1000px\"\n      />\n  </span>\n  </a></p>\n<p>Have you seen in the above image <code class=\"language-text\">header</code> and <code class=\"language-text\">blogposts</code> are two different components combined to build this index page.</p>\n<h2 id=\"creating-the-angular-component\"><a href=\"#creating-the-angular-component\" aria-label=\"creating the angular component permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Creating the angular component</h2>\n<blockquote>\n<p>This tutorial assumes that you already created a new <a href=\"/angular-intro-tutorial-start/\">angular project</a> by using angular-cli.</p>\n</blockquote>\n<p>Once you successfully created an angular project then open your project by using your favorite code editor.</p>\n<p>Now you can see <code class=\"language-text\">app</code> folder in your src directory these is the place where we create new components by default we can get root angular component called <code class=\"language-text\">app.component.ts</code>.</p>\n<p><em>To create a component we need to create a new folder with the component name inside <code class=\"language-text\">app</code> folder.</em></p>\n<p>Let’s create a new folder called <code class=\"language-text\">header</code> inside your <code class=\"language-text\">app</code> folder.</p>\n<p>Each angular component contains three files which are <code class=\"language-text\">.html</code>, <code class=\"language-text\">.css</code> and <code class=\"language-text\">.ts</code>.</p>\n<p><code class=\"language-text\">.html</code> : It contains the html markup related to that component.</p>\n<p><code class=\"language-text\">.css</code>: It contains the styling related code.</p>\n<p><code class=\"language-text\">.ts</code>: It is a TypeScript file which contains the component logic.</p>\n<blockquote>\n<p>Note: Angular uses the TypeScript which is a superset of the JavaScript if you don’t know about typescript then check out my <a href=\"/typescript-beginners-tutorial/\">TypeScript beginners tutorial</a>.</p>\n</blockquote>\n<p>Let’s create a new file called <code class=\"language-text\">header.component.html</code> inside the <code class=\"language-text\">header</code> folder and add the below code.</p>\n<div class=\"gatsby-code-title\">header.component.html</div>\n<div class=\"gatsby-highlight\" data-language=\"html\"><pre class=\"language-html\"><code class=\"language-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>nav</span><span class=\"token punctuation\">></span></span>\n   <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>h1</span><span class=\"token punctuation\">></span></span>This is my header<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>h1</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>nav</span><span class=\"token punctuation\">></span></span></code></pre></div>\n<p><em>angular uses the naming convention <code class=\"language-text\">name.component.fileextension</code></em></p>\n<p>Now, create a new file called <code class=\"language-text\">header.component.ts</code> inside <code class=\"language-text\">app</code> folder and add the below code.</p>\n<div class=\"gatsby-code-title\">header.component.ts</div>\n<div class=\"gatsby-highlight\" data-language=\"ts\"><pre class=\"language-ts\"><code class=\"language-ts\"><span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> Component <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">'@angular/core'</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token decorator\"><span class=\"token at operator\">@</span><span class=\"token function\">Component</span></span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span>\n    <span class=\"token comment\">//html tag of the component</span>\n    selector<span class=\"token operator\">:</span> <span class=\"token string\">'app-header'</span><span class=\"token punctuation\">,</span>\n    templateUrl<span class=\"token operator\">:</span> <span class=\"token string\">'./header.component.html'</span><span class=\"token punctuation\">,</span>\n    styleUrls<span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">export</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">HeaderComponent</span> <span class=\"token punctuation\">{</span>\n\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>In the above code, we first imported a <code class=\"language-text\">Component</code> decorator from the <code class=\"language-text\">@angular/core</code> package where it accepts the object as an argument.</p>\n<p><strong>selector</strong>: The name we added here, is used to add this component inside other component HTML files.</p>\n<blockquote>\n<p>Note: The selector name should start with <code class=\"language-text\">app-chooseyourname</code>.</p>\n</blockquote>\n<p><strong>templateUrl</strong>: Here we need to add a path of the html file we are using for this component.</p>\n<p><strong>styleUrls</strong>  Here we need to add a <code class=\"language-text\">css</code> file path for this component.</p>\n<h2 id=\"declaring-component\"><a href=\"#declaring-component\" aria-label=\"declaring component permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Declaring component</h2>\n<p>So far we have created a <code class=\"language-text\">HeaderComponent</code> but angular doesn’t aware of this component by default, for that, we need to import our <code class=\"language-text\">HeaderComponent</code> inside <code class=\"language-text\">app.module.ts</code> file because angular first checks this file to figure out what are available components and modules.</p>\n<div class=\"gatsby-code-title\">app.module.ts</div>\n<div class=\"gatsby-highlight has-highlighted-lines\" data-language=\"ts\"><pre class=\"language-ts\"><code class=\"language-ts\"><span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> BrowserModule <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">'@angular/platform-browser'</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> NgModule <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">'@angular/core'</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> AppComponent <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">'./app.component'</span><span class=\"token punctuation\">;</span>\n<span class=\"gatsby-highlight-code-line\"><span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> HeaderComponent <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">'./header/header.component'</span><span class=\"token punctuation\">;</span></span>\n<span class=\"token decorator\"><span class=\"token at operator\">@</span><span class=\"token function\">NgModule</span></span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span>\n  declarations<span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n    AppComponent<span class=\"token punctuation\">,</span>\n<span class=\"gatsby-highlight-code-line\">    HeaderComponent</span>  <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n  imports<span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n    BrowserModule\n  <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n  providers<span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n  bootstrap<span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>AppComponent<span class=\"token punctuation\">]</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">export</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">AppModule</span> <span class=\"token punctuation\">{</span> <span class=\"token punctuation\">}</span></code></pre></div>\n<p>In the above code, we imported our <code class=\"language-text\">HeaderComponent</code> and added it to the <code class=\"language-text\">decalarations</code> array.</p>\n<h2 id=\"rendering-component\"><a href=\"#rendering-component\" aria-label=\"rendering component permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Rendering component</h2>\n<p>To render a component, we need to add a component selector name(<code class=\"language-text\">app-header</code>) as an HTML tag, inside our <code class=\"language-text\">app.component.html</code> file because it’s the root component HTML file.</p>\n<div class=\"gatsby-code-title\">app.component.html</div>\n<div class=\"gatsby-highlight has-highlighted-lines\" data-language=\"html\"><pre class=\"language-html\"><code class=\"language-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>h1</span><span class=\"token punctuation\">></span></span>Hello from app component<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>h1</span><span class=\"token punctuation\">></span></span>\n\n<span class=\"gatsby-highlight-code-line\"><span class=\"token comment\">&lt;!--header component we created --></span></span><span class=\"gatsby-highlight-code-line\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>app-header</span><span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>app-header</span><span class=\"token punctuation\">></span></span></span></code></pre></div>\n<p>The <code class=\"language-text\">app-header</code> name we chose it inside our <code class=\"language-text\">header.component.ts</code> file.</p>\n<p>Now run your dev server by using <code class=\"language-text\">ng serve</code> in your terminal.</p>\n<p><a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/6a3a8a427be7722c1935ed6ce51edd93/076ca/angular-component-creation-example.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block;  max-width: 914px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 60%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAAsTAAALEwEAmpwYAAACG0lEQVQoz42SS08TURiG+wcwgtNiomHnRjdiAomXxPi/0AiUSwsl7UaW8g9cyEYTZKEkigaZ4ZIWLCUitw6dznQuZ+6P6SBRLipf8ubNd3LOk++c96Tu3OqhU7pK7+279D94Qt/9x/T2PeRe/yNu3Oyhs7MLSUqTliSkRGnS6QyZTDeSlKG7+3riXV3X6Oi4QiqXn2R0dJxcPs/Q4BClUomZlzNMv5imWCxRmCwwmM3zNFvk+UiB4eERJiYKicbHc0xNFRkby5HNjjIw8IyULMtUq1vUajVqtW02NjepbFRQZIVKZQPXddGaLTQzoGWHSW9bDkK4tFomtu3gOCJx3w9IKYrCt2qVcrnMyuoalm0TBEFy0Pc8/CBk/1BD3T3gUD3CME1iIIpJPFHc7mOCICRlWRZRFCWQMAw5XzGmaWNaLrEQ4HrgeRD6xwo8iINfaEiJ9qaziDhO1K6WiPi8ZfJ+TWdptUlZqbOyfMCivMfC0h7zn3Z4t7jDh3UVeUeQchznFOQEdOKHRsBc2eaNojGv6CzITRZWdN4uN5j92uD1F5VXH/eZlQ3mKs5p4Nmr/l4LqWsCw/L5X/0V+Oe0pi04UA0aRzrb33fZ21epqxqGbiGEh3A9XC9IgroU0PM89KZBQ9VYL1f50U68foRlOcmedqhRFF9mwuOrG6agaTgIR9DQ9OTftf/hRWf+CTz2CMPy8Pzowjc7G+ZPHKVSzZ1JUaoAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n    ></span>\n    <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;box-shadow:rgba(23,43,99,.2) 0 7px 28px; white;\"\n        alt=\"angular-component-creation-example\"\n        title=\"\"\n        src=\"/static/6a3a8a427be7722c1935ed6ce51edd93/076ca/angular-component-creation-example.png\"\n        srcset=\"/static/6a3a8a427be7722c1935ed6ce51edd93/63868/angular-component-creation-example.png 250w,\n/static/6a3a8a427be7722c1935ed6ce51edd93/0b533/angular-component-creation-example.png 500w,\n/static/6a3a8a427be7722c1935ed6ce51edd93/076ca/angular-component-creation-example.png 914w\"\n        sizes=\"(max-width: 914px) 100vw, 914px\"\n      />\n  </span>\n  </a></p>\n<p>In the above image,<strong>This is my header</strong> comes from the <code class=\"language-text\">HeaderComponent</code>.</p>\n<h2 id=\"creating-components-using-cli\"><a href=\"#creating-components-using-cli\" aria-label=\"creating components using cli permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Creating Components using CLI</h2>\n<p>We can also use <code class=\"language-text\">angular-cli</code> to create new components easily instead of doing manual work as we did above.</p>\n<p>Open your terminal and run the following command.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">ng generate component footer</code></pre></div>\n<p>This above command will create a new component called <code class=\"language-text\">footer</code> inside your app.</p>\n<p><a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/929f4bd0d8d9b52a40aab2b2b402c880/f7616/angular-cli-component-creation.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block;  max-width: 766px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 30%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsTAAALEwEAmpwYAAABd0lEQVQY0yWOS4/SYAAASZSFtl+/PllepS1WoG8KdEu76rpr9OrVBE121yiJJvr/b2OCh8ncJtNzwxHW5hvXqzPz9Dfz7A+z9NfFk/gvq8MTj08VP885d/cb0qKmbjrK7YGFHxEnBX4QEYSvCcKI3rSxcTcWy2jNvm4otzuSvCQrKvKyYpOWNO27SyjOd6yTgqTYcbhpmXlLVGExVCSDoaA/EPSi+wWz3CbNUx4+vOf2TcuxO3Jsmwv7m4aHT5+p24/kVUdVd+zqW5rujiTfMZ76aMJCFSaKMOklRckiOzGPT6z3P1jtz0TVd9aHM176TNp85cup5fH5SPe2QLd93GmANfLQ5AhVdxDSRdUtFM2g9+KlSl/EXMmMvp5wZWQMzIyhtUVx9lizLVHsERc+3qsluusjXQ/peBjOHGlNEIaLptv/DweqZKAoDFUFRdNQhY6QJrppo9sjdHuCavmoVoBwA8xxiDEOMUc+huMh7Rm6eY0mncvlP16Fqb8Lrtn4AAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n    ></span>\n    <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;box-shadow:rgba(23,43,99,.2) 0 7px 28px; white;\"\n        alt=\"angular-cli-component-creation\"\n        title=\"\"\n        src=\"/static/929f4bd0d8d9b52a40aab2b2b402c880/f7616/angular-cli-component-creation.png\"\n        srcset=\"/static/929f4bd0d8d9b52a40aab2b2b402c880/63868/angular-cli-component-creation.png 250w,\n/static/929f4bd0d8d9b52a40aab2b2b402c880/0b533/angular-cli-component-creation.png 500w,\n/static/929f4bd0d8d9b52a40aab2b2b402c880/f7616/angular-cli-component-creation.png 766w\"\n        sizes=\"(max-width: 766px) 100vw, 766px\"\n      />\n  </span>\n  </a></p>\n<p>Now inside our app folder, we have a new component called <code class=\"language-text\">footer</code>.</p>\n<p>To render this footer component,  first, we need to check what is the name of a <code class=\"language-text\">selector</code> used for this component, which is present inside <code class=\"language-text\">footer.component.ts</code> file.</p>\n<div class=\"gatsby-code-title\">footer.component.ts</div>\n<div class=\"gatsby-highlight has-highlighted-lines\" data-language=\"ts\"><pre class=\"language-ts\"><code class=\"language-ts\"><span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> Component<span class=\"token punctuation\">,</span> OnInit <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">'@angular/core'</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token decorator\"><span class=\"token at operator\">@</span><span class=\"token function\">Component</span></span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span>\n<span class=\"gatsby-highlight-code-line\">  selector<span class=\"token operator\">:</span> <span class=\"token string\">'app-footer'</span><span class=\"token punctuation\">,</span></span>  templateUrl<span class=\"token operator\">:</span> <span class=\"token string\">'./footer.component.html'</span><span class=\"token punctuation\">,</span>\n  styleUrls<span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span><span class=\"token string\">'./footer.component.css'</span><span class=\"token punctuation\">]</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">export</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">FooterComponent</span> <span class=\"token keyword\">implements</span> <span class=\"token class-name\">OnInit</span> <span class=\"token punctuation\">{</span>\n\n  <span class=\"token function\">constructor</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span> <span class=\"token punctuation\">}</span>\n\n  <span class=\"token function\">ngOnInit</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token punctuation\">}</span>\n\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Now in your <code class=\"language-text\">app.component.html</code> add the below code to render the <code class=\"language-text\">footer</code> component.</p>\n<div class=\"gatsby-code-title\">app.component.html</div>\n<div class=\"gatsby-highlight has-highlighted-lines\" data-language=\"html\"><pre class=\"language-html\"><code class=\"language-html\">\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>h1</span><span class=\"token punctuation\">></span></span>Hello from app component<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>h1</span><span class=\"token punctuation\">></span></span>\n\n<span class=\"token comment\">&lt;!--header component we created --></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>app-header</span><span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>app-header</span><span class=\"token punctuation\">></span></span>\n<span class=\"gatsby-highlight-code-line\"></span><span class=\"gatsby-highlight-code-line\"><span class=\"token comment\">&lt;!--footer component we created using cli --></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>app-footer</span><span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>app-footer</span><span class=\"token punctuation\">></span></span></code></pre></div>\n<p><a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/c7301012d8084ffb8cb7ed137b19d3fb/0fcea/angular-footer-component.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block;  max-width: 851px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 64%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAAsTAAALEwEAmpwYAAACOElEQVQ4y4WSzU4TYRSG5w76o3dgYmJIjBsTY0yMGxNvwIVGKC0F9sSFuiFejcGg7lhXo2FBjcgCKG21lE6n/eaXmU5nOj+PmaGDCAZO8uaczXnO+53zSQ8ePeH+w8fcun2XmTv3uHFzhmLxGsXidXK5fKpCvkAhn0+VzxcuKJdLcpFCoYi0WF1keWmZhcoCs7OzaX71+g2rq29ZWXlJtbrI87kqT18s8WxuiVKpzPx8hXJ54Z96vlyhVKog1evf2d3b5+DggP39Bru7e2xvb7O1tcXPnR16vR59YdJTPYTuoigDlMEQIVRkuc9gMERVNfp9hcOujNRqteh2uzSbzVSapqHrOkIIDMPAdkYMhYal6Vimhef5xFFMHCdiqpM6Cak5BXY6HYZCcD78ScAv2UAbmAjDxLJtImKS/rNimiXXdQmj6BRwMu1EUTo2QrVcBtaE2PTA8okNF8+0CHQbz7DRdYuxYxOHAVIGiqIohWTQaFr/PPJ4XzdZ2zRYq2ls1AQbXwTrtR7rX2U+fZb5UJP5+K3Pu80hUuYmA511moSwQxqKS73t8KPh0FU8joRPezCi0XdoKTZt4dGzYjr6GYf/iww6HrvIqsPx8QjTNHFsG99zCb0xhAHEAURBukXpMlh2PXvkYugWhmay1+zQ7sj0lOS7mIxdj0kQ4PkTwjC6zOHfVSRAVbMw9WOav49Qhiq6YeGM3Atd0lXPDcOQQzHCHk8gjvBTJ+HpEc/rSmDSGEbxlXvO8h/RnJTyf9atIwAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n    ></span>\n    <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;box-shadow:rgba(23,43,99,.2) 0 7px 28px; white;\"\n        alt=\"angular-footer-component\"\n        title=\"\"\n        src=\"/static/c7301012d8084ffb8cb7ed137b19d3fb/0fcea/angular-footer-component.png\"\n        srcset=\"/static/c7301012d8084ffb8cb7ed137b19d3fb/63868/angular-footer-component.png 250w,\n/static/c7301012d8084ffb8cb7ed137b19d3fb/0b533/angular-footer-component.png 500w,\n/static/c7301012d8084ffb8cb7ed137b19d3fb/0fcea/angular-footer-component.png 851w\"\n        sizes=\"(max-width: 851px) 100vw, 851px\"\n      />\n  </span>\n  </a></p>","excerpt":"In this tutorial, we are going to learn about what is a component and how to create new components in\nangular. Note: In the last tutorial…","timeToRead":5,"frontmatter":{"title":"Angular components tutorial","date":"Dec 26, 2019","tags":["angular"],"image":{"childImageSharp":{"resize":{"src":"/static/43e79fc7986729b586054724611eebd2/72f41/angular-components-tutorial-example.png"},"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAAAsTAAALEwEAmpwYAAABAUlEQVQY053Qb0vCUBQGcL9aKDNMd86gMdgi59V0273pKCIGUkmY263wRS8yQnsheXc39TPGSiX7AxH8OBweeF6ck/NiyAhwY7WRZnOV/EFutUm1s9CHE/tUGk5S8RL4DU2Ryk1ZAEuwOlIOw73ls8+GuhEVLF78zIwUiysWLx7c7ho3+ea0TCVmZVcAm6PR3/Ef7G7auRCsJ9s92T57agSTVvDidKdef3lyOWPn4+b1wj8a6NVH5XiueWJdNu/z5lWJhGAPoBYh4fi+gB0C4Vi/0wjHWgSEa/tBoT4usRSz8vpmcGaVzGt5o7XtI3GF+vVhrgAaI5XbYvwx/Pbtf3kDIGrZPpanSlIAAAAASUVORK5CYII=","aspectRatio":2.432098765432099,"src":"/static/43e79fc7986729b586054724611eebd2/3a40b/angular-components-tutorial-example.png","srcSet":"/static/43e79fc7986729b586054724611eebd2/1a5d6/angular-components-tutorial-example.png 197w,\n/static/43e79fc7986729b586054724611eebd2/93161/angular-components-tutorial-example.png 393w,\n/static/43e79fc7986729b586054724611eebd2/3a40b/angular-components-tutorial-example.png 786w,\n/static/43e79fc7986729b586054724611eebd2/4e530/angular-components-tutorial-example.png 1024w","sizes":"(max-width: 786px) 100vw, 786px"}}}},"fields":{"slug":"/angular-components-tutorial/"}},"site":{"siteMetadata":{"url":"https://reactgo.com","author":"Sai gowtham"}},"allMarkdownRemark":{"nodes":[{"frontmatter":{"title":"How to add font awesome icons to an Angular app"},"fields":{"slug":"/add-font-awesome-to-angular/"}},{"frontmatter":{"title":"How to add fonts to an Angular app"},"fields":{"slug":"/add-fonts-to-angular/"}},{"frontmatter":{"title":"How to check the Angular Version Quickly"},"fields":{"slug":"/angual-check-version/"}},{"frontmatter":{"title":"How to bind HTML attributes in Angular [tutorial]"},"fields":{"slug":"/angular-attribute-binding-tutorial/"}},{"frontmatter":{"title":"How to set a background image in Angular"},"fields":{"slug":"/angular-background-image/"}},{"frontmatter":{"title":"Can't bind to formGroup since it isn't a known property of form"},"fields":{"slug":"/angular-cant-bind-from/"}},{"frontmatter":{"title":"Change the favicon in Angular Easy way"},"fields":{"slug":"/angular-change-favicon/"}},{"frontmatter":{"title":"How to change the favicon dynamically in Angular"},"fields":{"slug":"/angular-change-favicon-dynamically/"}},{"frontmatter":{"title":"Clearing the input (text) field value in Angular"},"fields":{"slug":"/angular-clear-input-field/"}},{"frontmatter":{"title":"Angular cli commands list"},"fields":{"slug":"/angular-cli-commands/"}},{"frontmatter":{"title":"Changing the dist folder path in Angular"},"fields":{"slug":"/angular-change-dist-folder-path/"}},{"frontmatter":{"title":"How to fix the Global Angular CLI version greater than local version"},"fields":{"slug":"/angular-cli-global-local-version/"}},{"frontmatter":{"title":"Angular component communication using Subject(observable)"},"fields":{"slug":"/angular-component-communication/"}},{"frontmatter":{"title":"How to remove the packages using Angular CLI"},"fields":{"slug":"/angular-cli-remove-package/"}},{"frontmatter":{"title":"Angular components tutorial"},"fields":{"slug":"/angular-components-tutorial/"}},{"frontmatter":{"title":"Conditional Rendering in Angular using *ngIf directive"},"fields":{"slug":"/angular-conditional-attribute-directive/"}},{"frontmatter":{"title":"How to conditionally add classes in Angular using *ngClass"},"fields":{"slug":"/angular-conditional-class/"}},{"frontmatter":{"title":"How to create the Custom Directives in Angular"},"fields":{"slug":"/angular-custom-directive/"}},{"frontmatter":{"title":"How to delete a component in Angular app"},"fields":{"slug":"/angular-delete-component/"}},{"frontmatter":{"title":"Angular Directives List tutorial with examples"},"fields":{"slug":"/angular-directives/"}},{"frontmatter":{"title":"How to disable the button in Angular"},"fields":{"slug":"/angular-disable-button/"}},{"frontmatter":{"title":"How to set a document title in Angular app"},"fields":{"slug":"/angular-document-title/"}},{"frontmatter":{"title":"How to disable the Link in Angular"},"fields":{"slug":"/angular-disable-link/"}},{"frontmatter":{"title":"Download a File from Rest Api in Angular"},"fields":{"slug":"/angular-download-file-from-rest-api/"}},{"frontmatter":{"title":"Angular Event handling tutorial"},"fields":{"slug":"/angular-event-binding/"}},{"frontmatter":{"title":"Angular form validation tutorial (template driven)"},"fields":{"slug":"/angular-form-validation-template/"}},{"frontmatter":{"title":"Angular form handling tutorial"},"fields":{"slug":"/angular-forms/"}},{"frontmatter":{"title":"How to generate components in a specific folder using Angular cli"},"fields":{"slug":"/angular-generate-components/"}},{"frontmatter":{"title":"Getting the current route in Angular"},"fields":{"slug":"/angular-get-current-route/"}},{"frontmatter":{"title":"Getting a current year in Angular App"},"fields":{"slug":"/angular-get-current-year/"}},{"frontmatter":{"title":"How to get query params from a URL in Angular"},"fields":{"slug":"/angular-get-query-params/"}},{"frontmatter":{"title":"Getting the URL parameters in Angular"},"fields":{"slug":"/angular-get-url-parameters/"}},{"frontmatter":{"title":"How to declare a Global variable in Angular"},"fields":{"slug":"/angular-global-variable/"}},{"frontmatter":{"title":"How to bind an HTML content in Angular"},"fields":{"slug":"/angular-html-binding/"}},{"frontmatter":{"title":"How to install a specific version of angular with angular-cli"},"fields":{"slug":"/angular-install-specific-version/"}},{"frontmatter":{"title":"Angular 8 intro tutorial for the beginners"},"fields":{"slug":"/angular-intro-tutorial-start/"}},{"frontmatter":{"title":"How to implement Lazy Loading in Angular"},"fields":{"slug":"/angular-lazy-loading/"}},{"frontmatter":{"title":"Angular Lifecycle hooks tutorial"},"fields":{"slug":"/angular-lifecycle-hooks-tutorial/"}},{"frontmatter":{"title":"Angular - List rendering using *ngFor directive"},"fields":{"slug":"/angular-list-rendering-ngforexample/"}},{"frontmatter":{"title":"Angular content projection using ngContent directive"},"fields":{"slug":"/angular-ngcontent-tutorial/"}},{"frontmatter":{"title":"Angular ngStyle and ngClass directives tutorial"},"fields":{"slug":"/angular-ngstyle-ngclass-tutorial/"}},{"frontmatter":{"title":"Angular router navigate method example"},"fields":{"slug":"/angular-navigate-example/"}},{"frontmatter":{"title":"Angular rxjs tutorial to create observables"},"fields":{"slug":"/angular-observables/"}},{"frontmatter":{"title":"Angular ngIf,else tutorial with examples"},"fields":{"slug":"/angular-ngif-else/"}},{"frontmatter":{"title":"How to open link in a new tab in Angular"},"fields":{"slug":"/angular-open-link-new-tab/"}},{"frontmatter":{"title":"How to pass data from one component to another in angular"},"fields":{"slug":"/angular-pass-data-components/"}},{"frontmatter":{"title":"Passing data to routes in angular"},"fields":{"slug":"/angular-passing-data-to-routes/"}},{"frontmatter":{"title":"Difference Between One-way and Two-way Databinding in Angular"},"fields":{"slug":"/angular-oneway-vs-twoway-binding/"}},{"frontmatter":{"title":"Angular router query parameters (tutorial)"},"fields":{"slug":"/angular-queryparams/"}},{"frontmatter":{"title":"Angular reactive forms tutorial"},"fields":{"slug":"/angular-reactive-forms/"}},{"frontmatter":{"title":"How to redirect to an external URL in Angular"},"fields":{"slug":"/angular-redirect-to-external-url/"}},{"frontmatter":{"title":"Reading a JSON file in Angular Quickly"},"fields":{"slug":"/angular-read-json-file/"}},{"frontmatter":{"title":"Angular router redirection and 404 pages"},"fields":{"slug":"/angular-redirection-404pages/"}},{"frontmatter":{"title":"Angular route guards beginners tutorial"},"fields":{"slug":"/angular-route-guards/"}},{"frontmatter":{"title":"Angular routing beginners guide (Tutorial)"},"fields":{"slug":"/angular-routing/"}},{"frontmatter":{"title":"How to render a HTML string in Angular App"},"fields":{"slug":"/angular-render-html/"}},{"frontmatter":{"title":"How to add a placeholder to select tag in Angular"},"fields":{"slug":"/angular-select-tag-placeholder/"}},{"frontmatter":{"title":"How to select an element in Angular component"},"fields":{"slug":"/angular-select-element/"}},{"frontmatter":{"title":"A begginers Guide to Services in Angular"},"fields":{"slug":"/angular-services/"}},{"frontmatter":{"title":"Submitting the form by pressing Enter key in Angular"},"fields":{"slug":"/angular-submit-form-enter/"}},{"frontmatter":{"title":"How to turn off autocomplete for input in Angular"},"fields":{"slug":"/angular-turnoff-autocomplete/"}},{"frontmatter":{"title":"Two-way data binding in Angular using ngModel directive"},"fields":{"slug":"/angular-two-way-databinding/"}},{"frontmatter":{"title":"How to access the dom nodes in angular"},"fields":{"slug":"/angular-viewchild-acessing-dom-elements/"}},{"frontmatter":{"title":"Angular CanDeactivate guard tutorial"},"fields":{"slug":"/candeactivate-guard-angular/"}},{"frontmatter":{"title":"Cannot find module '@angular/compiler' in Angular [Solved]"},"fields":{"slug":"/cannot-find-module-angular-compiler/"}},{"frontmatter":{"title":"Cannot find module '@angular-devkit/core' in Angular [Solved]"},"fields":{"slug":"/cannot-find-module-angular-dev-kit-core/"}},{"frontmatter":{"title":"How to fix the can't bind to 'ngmodel' error in Angular"},"fields":{"slug":"/cant-bind-to-ngmodel/"}},{"frontmatter":{"title":"How to change a port number in Angular App"},"fields":{"slug":"/change-port-number-angular/"}},{"frontmatter":{"title":"How to deploy a Angular app to GitHub Pages [2023]"},"fields":{"slug":"/deploy-angular-app-github-pages/"}},{"frontmatter":{"title":"npm ERR! missing script: build:ssr [Solved]"},"fields":{"slug":"/npm-err-missing-script-build-ssr/"}},{"frontmatter":{"title":"How to uninstall the Angular CLI"},"fields":{"slug":"/uninstall-angular-cli/"}},{"frontmatter":{"title":"How to update angular CLI version to the latest"},"fields":{"slug":"/update-angular-cli-version/"}},{"frontmatter":{"title":"How to use HTTPS in Angular development"},"fields":{"slug":"/use-https-angular/"}}]}},"pageContext":{"slug":"/angular-components-tutorial/","tag":"angular","prev":{"fields":{"slug":"/convert-string-to-bytes-python/"},"frontmatter":{"title":"How to convert a String to Bytes in Python","courseurl":null,"tags":["python"],"date":"2019-12-27"}},"next":{"fields":{"slug":"/python-filename-without-extension/"},"frontmatter":{"title":"How to get a filename without a extension in Python","courseurl":null,"tags":["python"],"date":"2019-12-22"}}}},"staticQueryHashes":[]}