- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 PasswordComponent
,我想在其中使用 ng-template
。但是,我现在遇到 ExpressionChangedAfterItHasBeenCheckedError
错误m 编辑密码。我只想在 controlName === 'confirmPassword'
时使用 errorStateMatcher
并且我想不出另一种方法来有条件地绑定(bind) errorMatcher
完整代码可见here在 password.component.html
中,您会找到导致问题的 ng-template
:
<template *ngIf="controlName === 'confirmPassword'; then Custom else Default"></template>
<ng-template #Custom>
<input matInput [placeholder]="placeholder" [formControlName]="controlName" [type]="showPassword ? 'text' : 'password'" [autocomplete]="autocomplete" [errorStateMatcher]="errorMatcher"/>
</ng-template>
<ng-template #Default>
<input matInput [placeholder]="placeholder" [formControlName]="controlName" [type]="showPassword ? 'text' : 'password'" [autocomplete]="autocomplete"/>
</ng-template>
Note: Even if you remove the
ng-template
and put thengIf
on theinput
directly the error still shows. I originally thought the problem to be with theng-template
, but it's actually thengIf
.
mat-error
数字各不相同,有时值为 aria-describedby: null
。
PasswordComponent.html:4 ERROR Error: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'aria-describedby: mat-error-3'. Current value: 'aria-describedby: mat-error-4'.
mat-error
消息发生变化ExpressionChangedAfterItHasBeenCheckedError
。最佳答案
尝试以下操作:
<input #Custom *ngIf="controlName === 'confirmPassword'; else Default" matInput [placeholder]="placeholder" [formControlName]="controlName" [type]="showPassword ? 'text' : 'password'" [autocomplete]="autocomplete" [errorStateMatcher]="errorMatcher"/>
<ng-template #Default>
<input matInput [placeholder]="placeholder" [formControlName]="controlName" [type]="showPassword ? 'text' : 'password'" [autocomplete]="autocomplete"/>
</ng-template>
编辑
简而言之,它可能归结为使用在呈现子项后已修改的父值的子模板。这通常发生在父级完成渲染之前渲染子级。我最初认为这是因为您将 errorStateMatcher 指令放在了子模板中。
看看下面的文章,它比我更好地解释了这个问题,并且还介绍了导致问题的一些常见模式以及如何更改它们以解决问题:
编辑
根据您的评论,可能是 ngIf 指令与 matInput 指令冲突。您可以尝试以下操作吗:
<ng-container *ngIf="controlName === 'confirmPassword'; else Default">
<input #Custom matInput [placeholder]="placeholder" [formControlName]="controlName" [type]="showPassword ? 'text' : 'password'" [autocomplete]="autocomplete" [errorStateMatcher]="errorMatcher"/>
</ng-container>
<ng-template #Default>
<input matInput [placeholder]="placeholder" [formControlName]="controlName" [type]="showPassword ? 'text' : 'password'" [autocomplete]="autocomplete"/>
</ng-template>
以下是一个工作示例:StackBlitz Example
关于javascript - 如何在不获取 ExpressionChangedAfterItHasBeenCheckedError 的情况下对子组件中的 Material 输入使用 ngIf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54895316/
我想添加子类别并在列表上使用react,但是当我单击子类别时,我有两个事件:第一个在子类别上,第二个在父类别上。 我怎样才能只有子类别? 这是我的实际代码: getList(myList){
我有一个问题。我有 1:N 关系(用户:任务)。我需要查询所有用户的列表,其中每个用户都有其任务列表 - 按日期(指定属性)排序。 最佳答案 获取用户 RealmResults users = rea
考虑以下代码片段: OPTIONS Email 每当我将鼠标悬停在 上时,
我正在与 PF4J(Plugin Framework for Java) 的开发者合作为 Wicket 提供更好的插件功能。已经有一个 pf4j-spring 和一个 pf4j-wicket 项目来提
我有一个带有 SVG 子元素的父元素(SVG 是一个简单的立方体)。父级的 CSS 不透明度 = 0.45。在 Android/Webview 上显示不透明度值在渲染时应用于各个 SVG 多边形,导致
我试图放置一个标签,使标签的顶部位于 UIViewController 下方的 2/3 处。所以我写了这个约束,但它给了我下面的错误。 NSLayoutConstraint *labelTopCons
我是一名优秀的程序员,十分优秀!