如何在没有 ng-model 的情况下以 angular 2 形式以编程方式更改原始 属性
How to programmatically change pristine property in angular 2 form without ng-model
我是 Angular 2 框架的新手。感谢您的帮助。
我在 angular 2:
中有常用组件
import {FORM_DIRECTIVES, FormBuilder, Validators} from 'angular2/common';
export class TestComponent {
public values = ['value1', 'value2', 'value3', 'value4'];
}
然后我将 FormBuilder
注入到构造函数中:
@Inject(FormBuilder) public fb
HTML 包含下一个标记:
<input [(ngModel)]="formData.title" type="text" class="form-control" ngControl="title">
标题和描述效果很好。
但是我已经添加了 bootstrap 下拉列表并且 它没有任何表单元素。
<div *ngFor="#value of values" (click)="onValueChanged(value)" class="dropdown-item">{{value}}</div>
所以,问题是 html 标记不包含任何模型。
我试图解决这个问题的方法是创建函数 onValueChanged
onValueChanged(value){
this.formData.controls.value.updateValue(value);
this.formData.value = value;
console.log(this.formData.pristine) //Still true :(
}
这两行都不起作用,因为 this.formData.pristine
在下拉列表更改后没有更改。
暂时在想怎么更新FormBuilder
,有方法就好了,比如this.fb.update()
您可以使用
删除pristine
状态
this.formData.controls.value.markAsDirty();
目前的可能性非常有限。另见 https://github.com/angular/angular/issues/4933
我是 Angular 2 框架的新手。感谢您的帮助。
我在 angular 2:
中有常用组件import {FORM_DIRECTIVES, FormBuilder, Validators} from 'angular2/common';
export class TestComponent {
public values = ['value1', 'value2', 'value3', 'value4'];
}
然后我将 FormBuilder
注入到构造函数中:
@Inject(FormBuilder) public fb
HTML 包含下一个标记:
<input [(ngModel)]="formData.title" type="text" class="form-control" ngControl="title">
标题和描述效果很好。 但是我已经添加了 bootstrap 下拉列表并且 它没有任何表单元素。
<div *ngFor="#value of values" (click)="onValueChanged(value)" class="dropdown-item">{{value}}</div>
所以,问题是 html 标记不包含任何模型。
我试图解决这个问题的方法是创建函数 onValueChanged
onValueChanged(value){
this.formData.controls.value.updateValue(value);
this.formData.value = value;
console.log(this.formData.pristine) //Still true :(
}
这两行都不起作用,因为 this.formData.pristine
在下拉列表更改后没有更改。
暂时在想怎么更新FormBuilder
,有方法就好了,比如this.fb.update()
您可以使用
删除pristine
状态
this.formData.controls.value.markAsDirty();
目前的可能性非常有限。另见 https://github.com/angular/angular/issues/4933