Как обнаружить изменение свойства в Angular

Если это может помочь кому-то, я решил это с помощью обходного пути.

Bootstrap почти не заботится о высотах и ​​фиксирует их (я имею в виду, например, что заголовок не изменяет размер своей высоты, если высота окна уменьшается). Таким образом, объявляя высоту заголовка в (в моем случае, он идеально подходит) 165px позволило мне рассчитать высоту второй строки с

height: calc(100vh - 165px);

Не лучшее решение, но оно работает

0
задан matt 19 January 2019 в 11:55
поделиться

2 ответа

ngOnChanges можно использовать именно для этого

Сначала убедитесь, что ваш компонент реализует ngOnChanges следующим образом

export class TimelineComponent implements OnChanges

Затем реализуйте метод ngOnChanges следующим образом

    ngOnChanges(changes: SimpleChanges) {
        if (changes.editing) {
            console.log(changes.editing.currentValue);
        }
    }
[ 117] Каждый раз, когда любой вход был изменен, он будет вводить метод ngOnChanges. По этой же причине был добавлен оператор if, поскольку при изменении любого другого ввода свойство editing не будет существовать в объекте changes.

Для примитивных значений это сработает при любом изменении. Для ссылочных значений вам нужно изменить фактическую ссылку, просто изменение свойства объекта, имеющегося во входных данных, не сработает.

0
ответ дан Jelle 19 January 2019 в 11:55
поделиться

Я не думаю, что вам нужно двустороннее связывание (опять же, это зависит от вас и требований)

Просто используйте вместо этого привязку свойств ...

<app-timeline [editing]="editingDate"></app-timeline>

Всякий раз, когда устанавливается editing, вы должны излучать Output()

    @Output() editingChange = new EventEmitter();

     public get editing(): boolean {
        return this._editing;
     }

    @Input()
    public set editing(edit: boolean) {
        if (edit) {
            this._editing = edit;
            this.editingChange.emit("something");
        }
    }
0
ответ дан smart74 19 January 2019 в 11:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: