2
我有一个用户列表和用户详细信息组件,类似于英雄列表/详细信息的教程中的设置,其中选择列表中的用户应使其在详细信息组件中可编辑。问题在于改变用户会使表单变脏。为了使它更清楚这里是精简代码:Dart角度形式原始/脏动态
@Component(...)
class UserDetail {
@Input()
User user;
Future onSubmit() async {...}
}
而且模板如下:
<form (ngSubmit)="onSubmit()" #userEditForm="ngForm">
<h2>{{user.name}}</h2>
<input type="checkbox"
id="is_happy"
[(ngModel)]="user.is_happy"
ngControl="is_happy"
#is_happy="ngForm" />
<div [hidden]="userEditForm.pristine">
<material-button
[disabled]="!userEditForm.valid"
(trigger)="onSubmit()">
Update
</material-button>
</div>
</form>
我想让这个形式仅仅是脏的,如果用户交互与控制,而不是当底层用户从外部改变时。
什么是对方法做到这一点?有没有办法在用户更改时重置表单?我还没有找到任何可以轻松实现这个简单用例的东西。
由于材料输入是一个文本字段,我尝试使用材质复选框,但它的行为与常规复选框相同。我认为没有自定义值访问器代码[有](https://github.com/dart-lang/angular_components/tree/e0f5073ae5e73c9d6cb6e481f89424087d2c780f/lib/src/components/material_checkbox)。 另外,你知道是否有任何关于编写ValueAccessors的文档?我之前尝试过,但我没有得到任何地方。 – Milan
实际上有自定义值存取器代码,但它具有与默认存取器相同的问题。这里是[设置](https://github.com/dart-lang/angular_components/blob/e0f5073ae5e73c9d6cb6e481f89424087d2c780f/lib/src/components/material_checkbox/material_checkbox.dart#L113),这里是它标记的地方[脏](https://github.com/dart-lang/angular_components/blob/e0f5073ae5e73c9d6cb6e481f89424087d2c780f/lib/src/components/material_checkbox/material_checkbox.dart#L118),因为它使用标准检查输入,它也调用脏位。 –
这里没有任何单独的文档。继上面链接的ValueAccessors之一是目前我们拥有的最好的。我们会把它列入清单,写出一些更好的文档。 –