Typescript 角度2:从选择输入更改模型时应用程序冻结
在我正在编写的Angular 2应用程序中,我有一个Typescript 角度2:从选择输入更改模型时应用程序冻结,typescript,angular,Typescript,Angular,在我正在编写的Angular 2应用程序中,我有一个select元素,该元素通过[(ngModel)]绑定到控制器中的字段: DateInfo对象本身是一个简单的Typescript界面,只存储年份: export interface DateInfo { year: number } 我使用此接口的原因是将对year的更改传播到使用DateService的所有组件,如所示 由于某种原因,当从select元素更改模型时,整个应用程序将冻结(在Chrome和Edge中测试)。我用了一个例子来
select
元素,该元素通过[(ngModel)]
绑定到控制器中的字段:
DateInfo
对象本身是一个简单的Typescript界面,只存储年份:
export interface DateInfo {
year: number
}
我使用此接口的原因是将对year
的更改传播到使用DateService
的所有组件,如所示
由于某种原因,当从select
元素更改模型时,整个应用程序将冻结(在Chrome和Edge中测试)。我用了一个例子来说明这个问题
提前谢谢 该问题是由
getYearList()
为每个调用返回一个新的数组实例引起的。每次Angulars change detection运行时,它都会检测到一个变化,因为它每次都会得到一个新数组。
我想知道为什么你没有得到一个“自从上次检查以来,表情已经改变了”
缓存结果解决了这个问题
这就是为什么从模板调用方法通常是不好的做法。而是将方法调用的结果分配给属性并绑定到该属性。对不起,如果我解释得不好,但我的目标是生成一个新年列表,每次“代码>年<代码>更改,使<代码>年<代码>位于列表的中间。
getYearList()
方法必须在每次更改year
时返回一个新数组。我明白了,没有正确地关闭。
@Injectable()
export class DateService {
public dateInfo: DateInfo = {
year: 2016
}
}
export interface DateInfo {
year: number
}