如果没有新的归因,这个变量如何不断更新?

时间:2017-03-24 01:08:32

标签: javascript angular typescript

我有一个简单的服务,用于保存用户列表:

.navbar-default .navbar-nav li {
  display: inline-block;
  margin: 0 10px;
}
.navbar-default .navbar-nav li a {
  color: #000;
  text-decoration: none;
  font-weight: bold;
  transition: all 0.2s ease;
}
.navbar-default .navbar-nav li a:hover {
  color: #00dcbe;
}
.navbar-default .navbar-nav li.active a {
  color:blue;
}

注入它的组件:

export class UsersService {
  users = ['Max', 'Anna', 'Chris'];

  getUsers() {
    return this.users;
  }

  addUser(username: string) {
    this.users.push(username);
  }
}

其模板带有一个将用户添加到原始列表的按钮:

export class TestComponent {
  myUsers: any[];

  constructor(private us: UsersService) {
    this.myUsers = us.getUsers();
  }

  addUser(username: string) {
    this.us.addUser(username);
  }

考虑到构造函数只执行一次(我已经测试过),每次添加另一个用户时,<p><button (click)="addUser('Bob')">Add Bob</button></p> <p *ngFor="let user of myUsers">{{user}}</p> 变量如何不断更新?在构造函数之外没有其他属性,myUsers不可能是指针,因为我显然使用方法来获取新值的副本。

1 个答案:

答案 0 :(得分:3)

当您this.myUsers UsersService.users属性最终以引用结束原始UsersService.users数组时,而不是TestComponent.myUsers的副本阵列。也就是说,UsersService.usersUsersService.users指向同一个数组。因此,如果您更新TestComponent.myUsersMe.ctrOrders.Form.AllowEdits = False也会更新。