Angular 角度:下一次运行代码的最佳方式是什么?

Angular 角度:下一次运行代码的最佳方式是什么?,angular,Angular,我正在编写用于输入的模糊处理程序(mat input),它在表单生效时操纵DOM。我想确保验证错误在此时消失,这就是为什么我将代码包装在setTimeout中,以便在下一个刻度上运行它 有没有一种好的方法可以在下一次运行代码 显示和隐藏模糊错误消息的输入示例 问题:有没有一种好的方法可以在下一个时间点运行一些代码 回答:是的!使用角度形状控件管理形状状态。角度自动更新 import { Component } from '@angular/core'; import { FormControl,

我正在编写用于输入的模糊处理程序(mat input),它在表单生效时操纵DOM。我想确保验证错误在此时消失,这就是为什么我将代码包装在
setTimeout
中,以便在下一个刻度上运行它

有没有一种好的方法可以在下一次运行代码

显示和隐藏模糊错误消息的输入示例

问题:有没有一种好的方法可以在下一个时间点运行一些代码

回答:是的!使用角度形状控件管理形状状态。角度自动更新

import { Component } from '@angular/core';
import { FormControl, Validators } from '@angular/forms';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})

export class AppComponent {

  input = new FormControl('', {
    validators: [Validators.required, Validators.minLength(3)],
    updateOn: 'blur'
  });

  getErrorMessage() {
    return this.input.hasError('required') ? 'You must enter a value' :
      this.input.hasError('minlength') ? 'Minimum length is 3 characters' :
        '';
  }
}



<mat-card class="searchbox">
<mat-form-field>
    <input matInput  placeholder="Enter three of more characters" [formControl]="input" required>
    <mat-error *ngIf="input.invalid">{{getErrorMessage()}}</mat-error>
</mat-form-field>
<button mat-stroked-button>GO</button>
从'@angular/core'导入{Component};
从'@angular/forms'导入{FormControl,Validators};
@组成部分({
选择器:“我的应用程序”,
templateUrl:“./app.component.html”,
样式URL:['./app.component.css']
})
导出类AppComponent{
输入=新窗体控件(“”{
验证器:[validators.required,validators.minLength(3)],
更新:“模糊”
});
getErrorMessage(){
返回此.input.hasError('required')?“必须输入值”:
this.input.hasError('minlength')?“最小长度为3个字符”:
'';
}
}
{{getErrorMessage()}}
去

既然我们看不到您的代码,我不确定您最好的选择是什么。但是我通常使用
setTimeout
在下一个摘要周期中运行代码。谢谢@rhavelka,我的问题对于当前代码来说是相当一般的,而不是特定的。我想,您可能会遇到类似于
ngZone.runNext
或调度程序的一些用例。当然,我们可以简单地使用setTimeout/Promise/RxJs使其异步-但对我来说,这看起来像是一种解决方法。这适用于特定的用例,并且不够通用,无法在其他任何地方使用。