Angular 选择不从双向绑定获取值的控件
我有以下选择控件:Angular 选择不从双向绑定获取值的控件,angular,angular7,Angular,Angular7,我有以下选择控件: 可用 不可用的 我正在使用一个名为available的属性的双向绑定。我希望用户能够设置可用/不可用状态,后端方法将调用API,如果失败,将显示错误消息并将select控件设置回以前的状态 为了测试这一点,我做了以下组件: import { TextAttribute } from "@angular/compiler/src/render3/r3_ast"; import { Component, OnInit } from "@angul
可用
不可用的
我正在使用一个名为available
的属性的双向绑定。我希望用户能够设置可用/不可用状态,后端方法将调用API,如果失败,将显示错误消息并将select控件设置回以前的状态
为了测试这一点,我做了以下组件:
import { TextAttribute } from "@angular/compiler/src/render3/r3_ast";
import { Component, OnInit } from "@angular/core";
@Component({
selector: "my-app",
templateUrl: "./app.component.html",
styleUrls: ["./app.component.css"]
})
export class AppComponent implements OnInit {
available: boolean;
ngOnInit(): void {
this.available = false;
}
async handleChange(event: Event) {
// ... some process to set status
//oops error happened setting status, lets set it back
this.available = false;
console.log(event);
}
}
堆栈闪电战:
我期望发生的是,用户选择available,然后立即将其设置为unavailable,但实际情况是设置available
属性不会更改下拉列表
我对角度绑定的错误理解是什么?原因是
handleChange
中可用的值发生了变化,但在变化检测
周期之后,这就足够使用设置超时了
async handleChange(event: Event) {
// ... some process to set status
//oops error happened setting status, lets set it back
setTimeout(() => {
this.available = false;
console.log(event);
}, 0)
}
非常感谢。是否有我可以使用的承诺或订阅?正如您所说,如果您在handleChange
函数中发出http请求,并在observer中更改可用的,它将自动更新您的视图,而无需使用setTimeout
(对于测试,您可以使用一些伪造请求间隔(1000).管道(first())
)因为ngZone
猴子修补了可观察物。