Angular 2 ngModel实现

时间:2017-05-24 06:32:57

标签: angular

我使用这个基类来实现if($row = $query->fetch(PDO::FETCH_ASSOC)){ 接口,并在每个组件中扩展它,我注意到的是,如果我在ControlValueAccessor中放置一个断点,并且我有一个绑定到该值的视图,angular触发此函数连续,这是预期的行为吗?我应该关注这个吗?

get value()
  

这是类型提前组件的html

import { ControlValueAccessor } from "@angular/forms";

export class BaseValueAccessor<T> implements ControlValueAccessor {

    public disabled: boolean;
    public valueRef: T;
    private elementValue: T;

    get value(): T {
        return this.elementValue;
    }


    set value(value: T) {
        if (value === this.elementValue) {
            return;
        }

        this.setValue(value);
        this._onChangeCallback(this.elementValue);
        this._onTouchedCallback();
        console.log('base-value-accessor trigger change');
    }

    writeValue(obj: T): void {
        this.setValue(obj);
    }

    registerOnChange(fn: (_: T) => {}): void {
        this._onChangeCallback = fn;
    }

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

    setDisabledState(isDisabled: boolean): void {
        this.disabled = isDisabled;
    }

    markAsTouched() {
        this._onTouchedCallback();
    }

    private setValue(value: T) {
        this.elementValue = value;
        this.valueRef = this.elementValue;
    }

    private _onChangeCallback(_: T) {
    }

    private _onTouchedCallback() {
    } 
}
  

因此不同输入的[(ngModel)]绑定到该值,并且   如果CD被设置为普通CD,则多次调用get,我的问题   这是正常的框架,因为我认为这可能   在某些时候触发一些性能问题。

0 个答案:

没有答案