Angular2 - Material2 - Пользовательский флажок

Я работаю над созданием собственного флажка на основе проекта angular material2. Сначала кажется все работает, но когда я обновляю значения модели в коде, флажок не снимается, даже если angular регистрирует изменение. См. plunker для демонстрации.

Соответствующий код для обновления значений модели:

private _parentValue:bool = false;
get parentValue()
{
    return this._parentValue;
}
set parentValue(val)
{
    this._parentValue = coerceBooleanProperty(val);

    this.value1 = this._parentValue;
    this.value2 = this._parentValue;
    this.value3 = this._parentValue;
}

Заранее извиняюсь, если я сделал что-то не так, так как это моя первая публикация в Stack Overflow.


person S. Rasmussen    schedule 30.05.2017    source источник


Ответы (1)


Я бы переписал метод writeValue следующим образом:

writeValue(value: T) {
    if (isDefined(value)) {
        this._value = value;
    }
}

где isDefined - это функция типа

export function isDefined(val: any): boolean {
  return val !== null && val !== undefined;
}

Таким образом, ваш элемент управления может потреблять false значение

Разветвленный планкер

person yurzui    schedule 31.05.2017
comment
Ух ты! Вот оно. У меня сложилось впечатление, что метод writeValue использовался только для установки начального значения элемента управления. Спасибо! - person S. Rasmussen; 01.06.2017