Angular 输入元素上的Value属性仅更新一次

Angular 输入元素上的Value属性仅更新一次,angular,angular2-template,angular2-forms,Angular,Angular2 Template,Angular2 Forms,当我在输入元素中输入任何大于1的数字时——输入值将更改为1(因为验证)。出于某种原因,这只适用于我输入的第一个数字。例如,如果我输入11,输入值将更改为11,但应更改为1。至少我记得它在Angular 1中是这样工作的。知道发生了什么吗 从'@angular/core'导入{Component}; @组成部分({ 模板:` {{duration}}` }) 导出一类组件{ 持续时间:数字; 构造函数(){ 这个时间=0; } 验证(值){ 如果(值>1){ 这1.duration=1; } 否则

当我在输入元素中输入任何大于1的数字时——输入值将更改为1(因为验证)。出于某种原因,这只适用于我输入的第一个数字。例如,如果我输入11,输入值将更改为11,但应更改为1。至少我记得它在Angular 1中是这样工作的。知道发生了什么吗

从'@angular/core'导入{Component};
@组成部分({
模板:`
{{duration}}

` }) 导出一类组件{ 持续时间:数字; 构造函数(){ 这个时间=0; } 验证(值){ 如果(值>1){ 这1.duration=1; } 否则{ 这是一个持续时间=值; } } }

下面是(one.component.ts)

您的代码正在欺骗更改检测。使用此解决方案,更改检测将识别所有更改并更新您的
[value]=“duration”
绑定

导出类组件{
持续时间:数字;
构造函数(私有cdRef:ChangeDetectorRef){
这个时间=0;
}
验证(值){
这个时间=1;
this.cdRef.detectChanges();
如果(值>1){
这1.duration=1;
}
否则{
这是一个持续时间=值;
}
this.cdRef.detectChanges();
}
}

您的要求是什么?我无法理解您的第一行。@micronyks,我希望输入元素上的数字改为1。如果我输入的值大于1yay,它可以工作!我爱你,好先生!感谢您的时间和知识!你很好。末尾的
detectChanges()
调用可能不是必需的。事件发生后,Angular仍应运行更改检测。