Angular ReadOnly 信号受到影响吗?例如通过数组.pop

问题描述 投票:0回答:1

为什么当我在信号商店(在服务中)时

服务

  protected static readonly removedAllowances: WritableSignal<(ContractAllowanceDTO)[]> = signal<(ContractAllowanceDTO})[]>([]);

  /* getters */
  public getRemovedllowances() {
    return computed(() => ContractService.removedAllowances())
  }

组件

在组件类中

  protected readonly removedAllowances = this.contractService.getRemovedAllowances();

  let removedAllowances: any[];
  removedAllowances = this.removedAllowances();

  removedAllowances.pop();
  console.log('allowance', this.contractService.getRemovedAllowances()())

控制台记录结果,就好像服务中的变量 ContractService.removedAllowances() 也已被弹出。我以为信号是只读的?为什么removedAllowances.pop()会影响ContractService.removedAllowances()?

angular signals
1个回答
0
投票

基本类型 -> 数字、字符串、布尔值、未定义、空值和符号

当实际值发生变化时信号会触发(1!= 2 -> 更改触发)

非原始类型 -> 对象、数组等

作为参考存储在内存中。

内存引用更改时会触发信号( memref != memref2 更改触发)

此外,当您更改非基本类型的嵌套属性时,引用不会更改!

© www.soinside.com 2019 - 2024. All rights reserved.