我有一个简单的服务,用于保存用户列表:
.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
不可能是指针,因为我显然使用方法来获取新值的副本。
答案 0 :(得分:3)
当您this.myUsers
UsersService.users
属性最终以引用结束原始UsersService.users
数组时,而不是TestComponent.myUsers
的副本阵列。也就是说,UsersService.users
和UsersService.users
指向同一个数组。因此,如果您更新TestComponent.myUsers
,Me.ctrOrders.Form.AllowEdits = False
也会更新。