![](/img/trans.png)
[英]Angular 8 - How to use @HostBinding instead of host in a derivative
[英]What should I use instead of @HostBinding(“@grow”) in Angular 9?
我有这个指令,我用它来动画组件高度的变化。 但自从我们从 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"
关于我做错了什么以及如何解决它的任何建议?
在更新 Angular 之后,问题似乎出在 Angular (9.1.2) 上。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.