【发布时间】:2017-03-17 13:06:19
【问题描述】:
我有一个salary.service 和一个player.component,如果salary 变量在服务中更新,播放器组件中的视图会更新吗?还是在 Angular 2 中不是这样?
当页面第一次加载时,我在 player.component 视图中看到了 50000,所以我知道两者是一起工作的。它正在更新让我难过的价值。
salary.service
export class SalaryService {
public salary = 50000; // starting value which gets subtracted from
constructor() { }
public setSalary = (value) => { this.salary = this.salary - value };
}
player.component
export class PlayerComponent {
constructor(private salaryService:SalaryService) {}
public salary = this.salaryService.salary;
public updateSalary = (value) => { this.salaryService.setSalary(value) };
}
编辑
对于任何想了解我如何解决问题的人,这里是 Plunker:
【问题讨论】:
-
这与角度无关。它只是 JavaScript。更新对象中的字段不会自动更新另一个对象中的同名字段。我还建议您学习类方法的语法,并选择更好的名称:例如,您的 setSalary 方法不会设置salaty。它从工资中减去给定的值。
-
我不敢苟同,在 Angular 1 中,视图和模型会“自动”更新......对吗?
-
不,一点也不。
-
这不就是双向数据绑定吗?
-
不,这不是双向数据绑定。双向数据绑定是,由于 ng-model,视图会在模型更改时自行更新,而模型会在用户在输入字段中输入内容时自行更新。两个范围之间也可以有双向绑定(例如,控制器范围和指令隔离范围)。但是你在那里拥有的东西根本没有约束力。它只是将服务字段的值复制到组件的字段中。
标签: angular typescript angular2-services