Что я должен использовать вместо @HostBinding ("@ grow") в Angular 9? - PullRequest
3 голосов
/ 07 апреля 2020

У меня есть эта директива, которую я использую для анимации изменений высоты компонентов. Но поскольку мы обновили с Angular 8 до 9, похоже, что hostPropertyName @grow больше не поддерживается. Это директива:

import {
  Directive,
  OnChanges,
  Input,
  ElementRef,
  HostBinding
} from "@angular/core";

@Directive({
  selector: "[smoothHeight]",
  host: { "[style.display]": '"block"' }
})
export class SmoothHeightDirective implements OnChanges {
  @Input()
  smoothHeight;
  pulse: boolean;
  startHeight: number;

  constructor(private element: ElementRef) {}

  @HostBinding("@grow")
  get grow() {
    return { value: this.pulse, params: { startHeight: this.startHeight } };
  }

  setStartHeight() {
    this.startHeight = this.element.nativeElement.clientHeight;
  }

  ngOnChanges() {
    this.setStartHeight();
    this.pulse = !this.pulse;
  }
}

Chrome выдает следующую ошибку:

core.js:6185 ERROR TypeError: Cannot read property '11' of null

Safari предлагает следующее:

TypeError: null is not an object (evaluating 'componentLView[RENDERER]')

И Firefox:

ERROR TypeError: "componentLView is null"

Есть предложения о том, что я делаю неправильно, и как это исправить?

...