0

我浏览了很多链接:How to reload the current route with the angular 2 router,但我没有找到适合我的解决方案。

我有编辑屏幕,通过编辑屏幕我可以添加学生,当我成功添加学生后,我应该可以在同一个屏幕上看到新添加的学生。如果我们能做到这一点,有什么办法吗?我正在使用 Angular 7。

addStudents(): void {
    this.student.studentId = this.studentId;
    console.log(this.student);
    this.studentService.saveStudent(this.student).subscribe(response => {
      console.log(response);
      this.memberResponse = response;
    });
    this.ngOnInit();
    this.router.navigate(['/student-edit', this.studentList]);
}
4

2 回答 2

0

HTML

<div *ngIf="edit">
    // edit student form 
</div>
<div *ngIf="!edit">
   // show all student table
</div>

TS 文件

openEditForm() { this.edit = true }  // When user want to edit or add student


// Called when user clicks save on Edit Form
onSaveButtonClick() {
  // Logic to save or edit student using subscription
}

1. 成功执行保存或编辑学生后,调用 API 到 GetAllStudents

  1. 成功执行 GetAllStudents 时设置“this.edit = false”
于 2019-09-11T12:13:35.697 回答
0

如果您想使用相同的屏幕,那么为什么需要更改路线?或重新加载页面?

你只能通过布尔值来做到这一点

像这样

你的 ts 文件

export class myComponent {
    isEditMode = true;

    addStudents(): void {
        this.student.studentId = this.studentId;
        this.studentService.saveStudent(this.student).subscribe(response => {
            this.memberResponse = response;
            isEditMode = false;
        });
    }
}

现在在 HTML

<div *ngIf="isEditMode">
    // HTML for edit screen
</div>
<div *ngIf="!isEditMode">
   // HTML for view students screen
</div>
于 2019-09-09T07:53:08.203 回答