代码之家  ›  专栏  ›  技术社区  ›  iJade

为什么角度组件变量在服务方法调用时更新?

  •  0
  • iJade  · 技术社区  · 3 年前

    我有一个服务方法,如图所示:

    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

      getEmployees(){
        this.sub = this.service.getEmployees().subscribe((response) => {
          this.allEmployees = response;
        })
      }
    

    employees 使用方法 addEmployee 每次它更新阵列时 员工 该组件是一个变量 allEmployees

    2 回复  |  直到 3 年前
        1
  •  1
  •   GreyBeardedGeek    3 年前

    看起来您正在传递对数组的单个实例的引用,因此所有组件都引用同一个数组。

      getEmployees(){
        return of([...this.employees]);
      }
    
        2
  •  0
  •   JotaStar    3 年前

    因为 this.employees.push(employee);