Если это может помочь кому-то, я решил это с помощью обходного пути.
Bootstrap почти не заботится о высотах и фиксирует их (я имею в виду, например, что заголовок не изменяет размер своей высоты, если высота окна уменьшается). Таким образом, объявляя высоту заголовка в (в моем случае, он идеально подходит) 165px позволило мне рассчитать высоту второй строки с
height: calc(100vh - 165px);
Не лучшее решение, но оно работает
ngOnChanges можно использовать именно для этого
Сначала убедитесь, что ваш компонент реализует ngOnChanges следующим образом
export class TimelineComponent implements OnChanges
Затем реализуйте метод ngOnChanges следующим образом
ngOnChanges(changes: SimpleChanges) {
if (changes.editing) {
console.log(changes.editing.currentValue);
}
}
[ 117] Каждый раз, когда любой вход был изменен, он будет вводить метод ngOnChanges. По этой же причине был добавлен оператор if, поскольку при изменении любого другого ввода свойство editing
не будет существовать в объекте changes
.
Для примитивных значений это сработает при любом изменении. Для ссылочных значений вам нужно изменить фактическую ссылку, просто изменение свойства объекта, имеющегося во входных данных, не сработает.
Я не думаю, что вам нужно двустороннее связывание (опять же, это зависит от вас и требований)
Просто используйте вместо этого привязку свойств ...
<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");
}
}