我有一個如圖所示的服務方法:
import { Injectable } from '@angular/core';
import { of } from 'rxjs';
import Employee from '../model/employee';
@Injectable({
providedIn: 'root'
})
export class DataService {
employees : Employee[] = [{
fName : 'Sam',
lName : 'Johnson',
age : 32,
country : 'USA'
},{
fName : 'Raghav',
lName : 'Sharma',
age : 30,
country : 'India'
}];
constructor() { }
getEmployees(){
return of(this.employees);
}
addEmployee(employee : Employee){
this.employees.push(employee);
return of({
status : 200,
message : "Data inserted"
})
}
}
我訂閱getEmployees了組件 A。
getEmployees(){
this.sub = this.service.getEmployees().subscribe((response) => {
this.allEmployees = response;
})
}
組件 Bemployees使用方法更新服務陣列addEmployee。每次更新陣列時employees,組件 A 變數allEmployees都會更新。為什么 ??
uj5u.com熱心網友回復:
看起來您正在傳遞對陣列的單個實體的參考,因此所有組件都參考同一個陣列。
試試這個,它將回傳陣列的副本:
getEmployees(){
return of([...this.employees]);
}
uj5u.com熱心網友回復:
因為this.employees.push(employee);服務中改變了員工陣列,所以它觸發了組件 A 中 getEmployees 的觀察者
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/351855.html
標籤:有角的
上一篇:Flutter應用程式簡單登錄頁面,我在選擇acc“'Future<dynamic>'不是型別'()=>void'的子型別后收到此錯誤”
