将订阅移动到更早的执行阶段
当使用Angular进行订阅时,若订阅过于靠后,则可能会导致意外的行为。例如,在提交表单并在订阅响应时对表单进行重置,会导致表单重置失败或者出现不可预料的结果。
为避免这种情况,我们应该将订阅移到更早的执行阶段。例如,在模板驱动表单中,'ngSubmit”事件可以在表单提交前订阅:
// component.ts import { Component } from '@angular/core'; import { NgForm } from '@angular/forms';
@Component({
selector: 'my-app',
template:
,
})
export class AppComponent {
onSubmit(form: NgForm) {
console.log('form submitted', form.value);
}
}
当用户提交表单时,'onSubmit”方法会被调用,表单数据也会发送到服务器端。这可以避免在表单重置之前订阅响应,从而解决Angular中订阅过于靠后的问题。