如何创建可以支持ngModel和ngControl指令的组件

时间:2018-08-08 10:26:56

标签: angular dart

要访问我组件中的NgControl,我创建了构造函数:

NgControl _cd;
MyDateEditComponent(@Self() @Optional() this._cd);

我想这样使用我的组件:

<my-date-edit [(ngModel)]="date" ngControl="date">

<my-date-edit [(date)]="date" ngControl="date">

现在我有错误:

断言失败:“(日期)没有值访问器,或者您的指令列表中可能缺少formDirectives。”

如何解决?

1 个答案:

答案 0 :(得分:3)

如果您在自定义组件上使用ngModel,请使用ControlValueAccessor

export class YourComponent implements ControlValueAccessor { 
    // need to imlement following methods
    onChange = (val: Date) => { };
    onTouched = () => { };

    writeValue(val: Date) {
        // your ngModel value comes under here
    }

    registerOnChange(fn: (val: Date) => void) {
        this.onChange = fn;
    }

    registerOnTouched(fn: () => void): void {
        this.onTouched = fn;
    }
}