HTTP:更新/保存/删除时检测子组件中的更改
我一边学习HTTP。不确定如何前进。我只在我的服务中进行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
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()
那样做吗?对不起,我烦死你了!