我正在嘗試構建一個學生-教師結果查看門戶,教師可以在其中登錄并查看所有學生的結果并添加到該串列或編輯該串列。學生可以登錄以使用他們的憑據進行搜索并查看他們自己的結果。
我有一個學生名單(陣列)。我想在我的學生視圖中使用該串列來搜索串列并回傳具有匹配憑據的學生。我想使用該串列為教師提供完整串列的 CRUD 功能。
我想不出正確的方法來訪問我專案不同部分的學生串列。
我嘗試使用@Input 和 Service,但我無法以正確的方式進行操作,并且在這兩種方法中我都得到了空陣列。
實作這一目標的正確方法是什么?我在兄弟組件中有資料。我應該將資料存盤在父組件中嗎?請幫我找到正確的方法來做到這一點。
這是我擁有資料的組件,學生組件。您還可以在這張照片中看到組件和專案結構。目前我正在嘗試使用服務在兄弟姐妹之間傳輸資料但失敗了。我正在使用以下方法在建構式中設定資料:
this.studentTransferData.setData(this.students)

我正在嘗試使用以下方法在我的 StudentView 組件中獲取資料:
export class StudentViewComponent implements OnInit {
name: string = ""
rollno: number = 0
studentList = this.studentDataTransferService.getData();
@Input() students: Student[] = []
@Output() studentSearch: EventEmitter<Student> = new EventEmitter();
constructor(private studentDataTransferService: StudentDataTransferService) {
console.log(this.students)
console.log(this.studentList)
}
它控制空陣列。
如何在我的不同組件中獲取資料。我在學生組件中有它。謝謝。
編輯:我嘗試按照不同帖子中的建議在 ngInit 上進行內部操作,但它沒有按預期作業,我希望它在完整的專案中(兄弟姐妹和父母對孩子)這不是我目前想要的。
uj5u.com熱心網友回復:
當您需要在多個組件之間共享資料時,通常會使用服務。
為了真正反應,您還應該使用所謂的代理:這些是 RxJS 元素,可以充當可觀察者和觀察者。
private _students = new BehaviorSubject<Student[]>([]);
public students$ = this._students.asObservable();
get students() { return this._students.value; }
loadStudents() {
this.http.get<Student[]>(...).subscribe(students => this._students.next(students));
}
然后在其他組件中
students$ = this.service.students$;
constructor(private service: StudentsService) {}
<ng-container *ngFor="let student of students$ | async">
...
</ng-container>
編輯:在服務中使用它
是的,您可以在服務中使用它。如果您需要在某個時候進行 HTTP 呼叫,這是最好的解決方案:
constructor(private service: StudentsService) {}
rewardStudent() {
const bestStudent = this.service.students[0];
this.http.post(...).subscribe();
}
否則,您可以使用students$與組件相同的方式訪問。
uj5u.com熱心網友回復:
您可以在學生服務類中創建和存盤學生串列,還可以在服務中創建一個公共函式:getStudentsList,然后從不同的視圖中呼叫它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/510204.html
