【发布时间】:2018-06-19 00:40:46
【问题描述】:
您好,我在页面中有一个表格,其中显示了所有学生的列表,当我们点击表格中的查看按钮时,它会转到显示特定学生详细信息的其他页面。
学生列表是组件 1,学生详细信息是组件 2。
当他们点击“查看/编辑”按钮时如何向其他组件发送数据?
1st -> student-list.component.ts
import { Component, OnInit, Input } from '@angular/core';
import { Router, ActivatedRoute, RouterModule } from '@angular/router';
@Component({
selector: 'app-student-list',
templateUrl: './student-list.component.html',
styleUrls: ['./student-list.component.scss']
})
export class StudentsListComponent implements OnInit {
userData: any;
selectedUser: any;
constructor(public router: Router, public route: ActivatedRoute) { }
ngOnInit() {
this.getStudentList();
}
getStudentList() {
this.http.get<Student>('*url*')
.subscribe(data => {
this.student = data;
});
}
}
第二个 -> student.component.ts
import { Component, OnInit, Input } from '@angular/core';
import { Router, ActivatedRoute, RouterModule } from '@angular/router';
@Component({
selector: 'app-student-selected',
templateUrl: './student.component.html',
styleUrls: ['./student.component.scss']
})
export class SelectedStudentComponent implements OnInit {
constructor(public router: Router, public route: ActivatedRoute) { }
ngOnInit() {
}
}
【问题讨论】:
-
如果要在父子组件之间共享数据,请使用@Input(),否则使用服务在组件之间共享数据。在您的情况下,单击“查看/编辑”按钮获取数据并存储在服务中,当您路由到学生组件时,使用 ngOnInit() 从服务中填充数据
-
我可以有一项服务来获取所有学生的名单。但是,当我点击 sview 按钮时,如何仅获取特定学生的详细信息?
-
在同一服务中单击“查看/编辑”按钮有一个方法 setStudentData() ,您可以在其中传递您获得的学生的数据并将其存储在变量中,然后使用检索学生数据另一种方法 getStudentData() 可以在学生组件的 ngOnInit() 中使用。
-
你能给我举个例子吗
-
添加为答案,因为在评论中很难有相同的内容
标签: angular components routerlink