HTTP:更新/保存/删除时检测子组件中的更改

HTTP:更新/保存/删除时检测子组件中的更改,http,typescript,angular,Http,Typescript,Angular,我一边学习HTTP。不确定如何前进。我只在我的服务中进行http调用 然后我有一节课,老师,这里有一些方法: export class Teacher { public addStudent(value: Student): void { this.students.push(value); } } 我有一个列出教师的列表组件,在该组件中,用户可以单击教师并移动到详细信息页面,在该页面中接受用户输入并向教师添加学生 export class TeacherDe

我一边学习HTTP。不确定如何前进。我只在我的服务中进行http调用

然后我有一节课,老师,这里有一些方法:

export class Teacher {

    public addStudent(value: Student): void {
        this.students.push(value);
    }
}
我有一个列出教师的列表组件,在该组件中,用户可以单击教师并移动到详细信息页面,在该页面中接受用户输入并向教师添加学生

export class TeacherDetailComponent implements OnActivate {

    teacher: Teacher;

    constructor(public _service: Service, public _router: Router) {    }

    routerOnActivate(curr: RouteSegment): void {
        let id = curr.getParam('id');
        this._service.getById(id)
            .subscribe(teacher => {
                this.teacher = teacher;
            });
    }

    addStudent() {
        this.teacher.getStudents().push(new Student());
        //what code here?
    }
}

这是我的头巾,我如何和在哪里告诉Angular在添加新学生时为老师更新数据

事实上,您的问题与组件通信有关。我将为此创建一个共享服务

有关更多详细信息,请参阅此文档:

因此,我将创建一个服务来通知列表组件一个学生被添加或删除,以便它可以相应地更新列表。以下是一个示例:

@Injectable()
export class StudentService {
  userAdded:Subject<Student> = new Subject();
  userDeleted:Subject<Student> = new Subject();

  constructor(private http:Http) {
  }

  addStudent(student:Student) {
    return this.http.post('/users', ...)
        (...)
        .do((addedStudent) => {
          this.userAdded.next(addedStudent);
        });
  }

  deleteStudent(student:Student) {
    return this.http.post('/users', ...)
        (...)
        .do((removedStudent) => {
          this.userRemoved.next(removedStudent);
        });
  }
}
在列表组件中:

addStudent() {
  let newStudent = new Student();
  this.studentService.addStudent(newStudent).subscribe(addedStudent => {
    this.teacher.getStudents().push(addedStudent);      
  });
}
this.studentService.addedStudent.subscribe(addedStudent => {
  // do something
});

你能添加你的
TeacherDetailComponent
组件的模板吗?@GünterZöchbauer是的,这实际上是我问题的一部分,尽管我没有指出。我想它应该在用户做的每一次更改时更新教师@AJT_82“每次更改”是什么意思?当用户添加、删除。。。我更新了我的问题,因为我仍在努力掌握这一点。。。所以如果你能看一下,我真的很感激!当学生为某位老师更新时,教师列表页面中有一些内容需要更新?不,这就是为什么我想知道为什么我需要在那里添加代码。代码按原样显示,
无法读取属性isSkipSelf为null
。我很讨厌看错误代码…嗯。。。我正在调查EventEmitter,这可能对我有帮助吗。EventEmitter对我来说是全新的,所以我只是看看它是如何工作的。但是,当用户在详细信息页面中进行更改时,会触发事件并“以某种方式”告诉老师发送http post请求以更新数据库中的数据,这是否可行…?@GünterZöchbauer我在最后完全更新了我的问题。。。没有办法像我最后写的
addStudent()
那样做吗?对不起,我烦死你了!