开发能够添加任务的待办事项列表。当所有代码都是一个组件(Tasklist)和一个服务(Taskservice)时,一切都可以正常工作。但是,当尝试将一个组件分离为多个组件(Tasklist 和 Addtask)时,包含任务列表的表不会在添加时更新。这是我们的实现。
任务列表:
import { Component, OnInit, Inject } from '@angular/core';
import { TaskService } from '../task.service';
import { Observable } from 'rxjs/Observable';
import { Task } from '../task';
@Component({
moduleId: module.id,
selector: 'app-tasklist',
providers: [TaskService],
template: '
<table>
<tr>
<td><a>Complete</a></td>
<td><a>Name</a></td>
<td><a>Due Date</a></td>
<td>Option</td>
</tr>
<tr *ngFor="let item of items" [items] = "items">
<td>
<p> {{item.Name}} </p>
</td>
<td>
<p> {{item.DueDate}} </p>
</td>
</tr>
</table>
',
styleUrls: ['tasklist.component.css']
})
export class TasklistComponent implements OnInit {
public items : Task[];
constructor(private service: TaskService ){}
ngOnInit(){
this.getTasks();
}
getTasks(){
this.service.Get().subscribe(e => this.items = e);
}
}
添加任务组件:
import { Component, Input} from '@angular/core';
import { TaskService } from '../task.service';
import { TasklistComponent } from '../tasklist/tasklist.component';
import { Task } from '../task';
@Component({
moduleId: module.id,
selector: 'app-addtask',
providers: [TaskService, TasklistComponent],
directives: [TasklistComponent],
template: '
<form>
<input type="text" [(ngModel)]="taskname" placeholder="Task name" >
<input type="text" [(ngModel)]="duedate" placeholder="Due Date" >
<input type="submit" value="Submit" (click)="addTask()" >
</form>
',
styleUrls: ['addtask.component.css']
})
export class AddtaskComponent {
public taskname : string;
public duedate : string;
@Input() items:Task[];
constructor(private service : TaskService){}
addTask(){
this.service.Post(this.taskname, this.duedate).subscribe(e=>{
this.getTasks();
return e;
});
this.taskname = '';
this.duedate = '';
}
getTasks() {
this.service.Get().subscribe(e => this.items = e);
}
}
addTask() 方法将其添加到列表中,但除非页面刷新,否则不会导致任务列表在视图中更新。
基本问题:如何在不刷新页面的情况下将单个组件正确拆分为多个组件?