- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
使用 Angular 2,我有一个名为“example”的参数,它是一个 Date 对象。在模板中,我想用日期管道格式化“示例”。像这样:
<input type="text" [value]="example | date:'shortTime'">
// 9:00 AM
但是,我需要使用 Angular 的响应式表单。 FormControl 是先例,因此 formControlName
将覆盖 value
指令中的任何内容。
<input type="text" formControlName="example">
// Wed Mar 08 2017 09:00:00 GMT-0700 (MST)
<input type="text" formControlName="example" [value]="example | date:'shortTime'">
// Wed Mar 08 2017 09:00:00 GMT-0700 (MST)
formControlName
指令不接受管道。如何在响应式表单的模板中格式化 Date 对象?
伪代码:
@Component({
template: `
<form [formGroup]="formGroup">
Example: <input type="text" formControlName="example">
</form>
`
})
export class ExampleComponent implements OnInit {
public formGroup: FormGroup;
public example: Date = new Date();
public ngOnInit() {
this.formGroup = new FormGroup({
example: new FormControl(this.example)
});
}
}
最佳答案
更新:我意识到一种更简单、更明智的方法是使用 valueChanges 对更改事件值执行带有管道转换的 setValue。
如果您有许多带有订阅的表单控件,可能有一些关于清理订阅和提高效率的最佳实践。您还可以在处理/提交最终表单值时清除任何不需要的管道转换。
基本示例(另请参阅:original source):
ngOnInit() {
this.searchField = new FormControl();
this.searchField.valueChanges
.subscribe(val => {
this.searchField.setValue(myPipe.transform(val))
});
}
带有去抖延迟 + 清晰度检查的摘录(由 RxJS pipeable operators 提供):
this.searchField.valueChanges
.pipe( // RxJS pipe composing delay + distinctness filters
debounceTime(400),
distinctUntilChanged()
)
.subscribe(term => {
this.searchField.setValue(myPipe.transform(val))
});
原始建议...
This answer描述了如何为输入字段创建自定义控件值访问器,该访问器在 onChange(获取 convertTo* 自定义函数)和 writeValue(获取 convertFrom 自定义函数)方法中插入自定义时间戳转换函数。
您可能会创建类似的东西(例如,使模板等适应其他表单输入类型),但将转换函数替换为您想要的 Pipe 转换方法(可能是两种不同的类型)以实现您想要的。 Angular 文档或源代码可能有助于了解更多详细信息。
我认为这里建议的其他方法涉及在初始表单控件创建期间进行管道转换,这些方法更受限制并且可能不是您所期望的,因为它不会在用户更改输入值时继续应用这些更改.它一开始会正确显示,但任何操作都会丢失转换过滤,并且表单会简单地按原样提交,而不应用管道转换。
我可能遗漏了一些关于其他建议的工作原理或您所追求的具体内容的信息。
关于Angular 2 react 形式 - 从 formControlName 传递一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42677762/
我正在尝试来自官方 Angular 响应式(Reactive)表单验证 doc 。我在渲染 formControlName 时遇到问题。它给出了用户名未定义的错误这里有一个错误 Error: Unca
我创建了 form: FormGroup 变量,我在服务的构造函数中使用 FormArray localizationData: FormArray 定义了组: this.form = this.fo
我正在使用响应式控件构建动态表单,我需要能够显示数据而不是在输入控件中使用它。我基本上有一个开关,可以在基于输入和只读(用于打印)之间切换表单。但是,我不能将 label 或 span 与 formC
我想创建一个自定义输入组件并在我的表单中重用它,但我遇到了 formGroup 和 formControlName 的问题。 // Form // CustomInput Component
在括号内使用 formControlName 和不在括号内有什么区别?在动态表单教程中 formcontrolname 被用在方括号内 [formControlName]="dyncontrol.ke
我在 Mat-Autocomplete 上使用 formControlName 时遇到问题。 我不知道为什么,但我的 formControlName 不会发送数据,是我写错了吗? 当我尝试从 HTML
我想创建一个可以与 FormBuilder API 一起使用的自定义输入组件。如何在组件中添加 formControlName? 模板: {{ label }}
新: 所以我可以让它在没有 radio 组或没有正确绑定(bind)的情况下工作。我无法让它与两者一起工作。 这是允许的:
我正在使用 mat-select ,我需要为它设置默认值。它有效,但在向其添加 formControlName 后,不显示其默认值。 我试过 [(ngModel)] 和 [(value)] ,以及“m
在创建模型驱动表单时,我收到一个错误:错误:formControlName 必须与父 formGroup 指令一起使用。您需要添加一个 formGroup 指令并将其传递给现有的 FormGroup
我想通过实现 ControlValueAccessor 创建自定义表单元素地址。 我正在尝试创建一个 AddressComponent,其中有多个输入字段。我想在如下所示的 react 形式中使用此组
我想通过实现 ControlValueAccessor 创建自定义表单元素地址。 我正在尝试创建一个 AddressComponent,其中有多个输入字段。我想在如下所示的 react 形式中使用此组
我正在通过 angularjs2 中的表单生成器制作表单,我想添加表单元素的 formControlName 属性/属性,如下所示: 我该怎么做? 编辑: 我还想将有效性消息放在输入元素旁边,
如何将 formControlName 映射到特定的 formArray 项? 我无法控制服务器数据并尝试创建一个包含电话号码数组的表单。 表单本身在视觉上并没有将手机并排布置,我希望能够像通常使用
我曾经有一个没有任何验证的简单表单,其中 HTML 大致如下所示: [(ngModel)]="todoListService.toDoData.tas
我希望将数字管道添加到 Angular2 中的输入字段。我正在使用模型驱动的表单,我的所有输入都有一个 formControlName 而不是使用数据绑定(bind)。我遇到的问题是 formCont
我正在使用基于模型的表单,我的表单如下所示: Submit 我想写一个 Protractor 规范来测试登录。我喜欢在我的规范中做类似下面的事情: element(by.f
哦,angular2...为什么这么难? {{exposure}} 如果我在输入中使用 formControlName,则值是正确的。 如何获取模板中的曝光值?标签中的空白 最佳答案 The for
作为 Angular documentation说我们可以在表单中使用 formControlName: Hero Detail FormControl in a FormGroup
我正在使用 Angular2 的 ReactiveFormsModule 创建一个包含表单的组件。这是我的代码: foo.component.ts: constructor(fb: FormBuild
我是一名优秀的程序员,十分优秀!