#13: π§ Refactor App Component
We're going to perform a small refactoring. The app-root shouldn't have such a large template and all this logic. It should just call another component that will deal with that.
Create a new component called
list-manager:
Move all the code from
app-roottolist-manager.You can keep the title in app-root, and give it a nice value.
Be careful not to change the list manager component's class name!
@Component({
  selector: 'app-root',
  templateUrl: `./app.component.html`,
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'My To Do List APP';
}<h1>
    Welcome to {{ title }}!
</h1>import { Component, OnInit } from '@angular/core';
import { TodoItem } from '../interfaces/todo-item';
@Component({
  selector: 'app-list-manager',
  templateUrl: `./list-manager.component.html`,
  styleUrls: ['./list-manager.component.css']
})
export class ListManagerComponent implements OnInit {
  todoList: TodoItem[] = [
    {title: 'install NodeJS'},
    {title: 'install Angular CLI'},
    {title: 'create new app'},
    {title: 'serve app'},
    {title: 'develop app'},
    {title: 'deploy app'},
  ];
  constructor() { }
  ngOnInit() {
  }
  addItem(title: string) {    
    this.todoList.push({ title });
  }
}<app-input-button-unit 
  (submit)="addItem($event)">
</app-input-button-unit>
<ul>
  <li *ngFor="let todoItem of todoList">
    <app-todo-item [item]="todoItem"></app-todo-item>
  </li>
</ul>Call the new component from the
app-roottemplate:
<h1>
    Welcome to {{ title }}!
</h1>
<app-list-manager></app-list-manager>That's it! Now we can go on.
Last updated
Was this helpful?