- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在构建一个自定义组件,它实现了 ControlValueAccessor,因此我可以在我的 from.xml 中将其与 ngControl 和 ngModel 一起使用。现在我想要逻辑来验证组件是否在其内部(以便它是自包含的)。到目前为止一切顺利,但现在我有一个循环依赖,因为我试图在一个组件中注入(inject) NgControl(以设置外部表单状态),该组件自行注入(inject)一个 CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR提供商。这里的代码:
const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR = new Provider(
NG_VALUE_ACCESSOR, {
useExisting: forwardRef(() => CustomInput),
multi: true
});
@Component({
moduleId: module.id,
selector: 'custom-input',
templateUrl: 'custom-input.html',
styleUrls: ['custom-input.css'],
directives: [CORE_DIRECTIVES],
providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR]
})
export class CustomInput implements ControlValueAccessor{
private _text: any = '';
public isValid:boolean = false;
onChange: EventEmitter<any> = new EventEmitter();
onTouched: any;
constructor(private ngControl:NgControl) {
}
onToggle(){
this.isValid = !this.isValid;
let res = this.isValid? null:{ "test": true };
this.ngControl.control.setErrors(res);
}
get text(): any { return this._text; };
set text(v: any) {
if (v !== this._text) {
this._text = v;
this.onChange.emit(v);
}
}
writeValue(v) {
this.text = v;
}
registerOnChange(fn): void {
this.onChange.subscribe(fn);
}
registerOnTouched(fn): void {
this.onTouched = fn;
}
}
如何从组件中获取对 ngControl 的引用?我知道你可以这样做:this.ngControl = this._injector.get(NgControl, null);
但在这种情况下,这有点像 hack,不是吗?
最佳答案
您可以将 NgControl
注入(inject)到您的组件中。
constructor(@Self() @Optional() private ngControl: NgControl) {
if (this.ngControl) {
this.ngControl.valueAccessor = this;
}
}
并删除 NG_VALUE_ACCESSOR
提供程序。
关于angular - 如何从 ControlValueAccessor 获取对 NgControl 的访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37781687/
事情是这样的: {{something}} 出于某种原因,我无法访问另一个 Controller 的 div 中的 controller1.Data.someId,但我
出于各种原因,我有几个包装 PrimeNG 组件的自定义组件。我的组件的一些实例以 react 形式使用,并且字段的“要求”是使用 Validators.required 验证器设置的。 PrimeN
我正在尝试在自定义组件上使用 ngControl。我已经创建了组件并在组件上实现了 ControlValueAccessor。 然后在构造函数中,注入(inject) NgControl 如下: co
我有一个 angularJS 应用程序的工作实现,它从 URL 中获取一些链接并绘制它们。然而,URL 上的链接会不断更新,我想定期更新此 $scope.liSTLinks,假设每 10 秒更新一次。
在我的 Angular 应用程序中,我有一个动态更改输入组件的表单。所有动态组件都是 ControlValueAccessor 的实现。 如果您在 Input 中输入值,然后更改组件(单击“将组件更改
一旦我导入 FormsModule,我就会开始收到此错误。我正在使用 MatFormField,但它似乎不能与 FormsModule 一起使用。 最佳答案 我刚刚用与您相同的错误消息解决了我的问题。
我有以下内容(https://jsfiddle.net/hhgqup4f/5/): Parent Controller 是: app.controller("Controller", Con
这是一个骗子:http://plnkr.co/edit/F6QM4KUU8DPNq6muInGS?p=preview 使用 ng-include 包含 html 文件,并在同一标记中设置 ng-con
我在理解如何使用 ng-controller 时遇到了一些困难。我在 eventController.js 中有一个表单 Controller 。 My Event:{{event.na
我想知道这两种创建 Controller 的用例是什么: 使用 ngController: myApp.controller('myController', ['$scope', function (
如何使用 ngControl在 contenteditable元素?例如,我想要: 通过绑定(bind)(?)将其绑定(bind)到模型驱动的“表单”(表格)。我用 formBuilder 创建了
如何从单元测试中访问注入(inject)的 ngControl?如何解决错误? 在组件中 constructor( @Self() @Optional() public ngControl:
我正在尝试创建自定义 angular 2 验证器指令,它像这样注入(inject) NgControl: @Directive({ selector: '[ngModel][customValid
我有以下 Angular 2 形式: {{'FIRST_NAME_FORM.MIN_
在 Angular 2 形式中,尝试通过 ngSubmit 获取数据。我可以毫无问题地在我的表单组件中分配 ngModel 和 ngControl 属性,但是在子组件 MyInput 中,我无法在没有
我很难尝试在表单中同时使用 *ngIf 和 ngFormModel 来验证所述表单。 用例是这样的:根据用户输入,隐藏或停用表单中的某些特定字段。但如果显示这些输入,则必须对其进行验证。 当只需要基本
在我的应用程序中,我想保留对某些代码部分使用普通 Controller 的选项 - 而不是为永远不会重复使用的一次性事物创建指令。 在这些情况下,我经常想从 Controller 发布一些数据以在包含
我正在构建一个自定义组件,它实现了 ControlValueAccessor,因此我可以在我的 from.xml 中将其与 ngControl 和 ngModel 一起使用。现在我想要逻辑来验证组件是
我正在构建一个自定义组件,它实现了 ControlValueAccessor,因此我可以在我的 from.xml 中将其与 ngControl 和 ngModel 一起使用。现在我想要逻辑来验证组件是
我正在尝试按照 Kara Erickson 在上一个 Angular Connect 上推荐的方式实现自定义 ControlValueAccessor https://youtu.be/CD_t3m2
我是一名优秀的程序员,十分优秀!