【发布时间】:2018-08-22 02:16:31
【问题描述】:
我想做一个动态菜单,菜单本身有css类,如果我选中一个复选框,菜单必须从左到右改变位置。
现在该指令有效,但只有一次,当程序加载时,如果我尝试更改程序中的复选框,则没有任何反应。
html:
<div class="wrapper">
<div class="app-menu" adjustSide side="{{position}}">
<router-outlet></router-outlet>
</div>
</div>
我尝试使用(side)="position"、[side]="position" 和[(side)]="position"。
还有指令:
@Input('side') private side:string;
private el: HTMLInputElement;
constructor( private renderer: Renderer2, private elementRef: ElementRef ) {
this.el = this.elementRef.nativeElement;
}
ngOnChanges(changes: { [propName: string]: SimpleChange }) {
if (this.side == 'left') {
this.renderer.addClass(this.el, 'offset-left');
this.renderer.removeClass(this.el, 'offset-right');
}else{
this.renderer.removeClass(this.el, 'offset-left');
this.renderer.addClass(this.el, 'offset-right');
}
}
我还在学习角度,所以出于某种原因,我不明白为什么新值似乎没有达到指令,但我不知道为什么。
我做错了什么?我错过了什么吗?
【问题讨论】:
-
嗨,处理@Input 的正确方法是
[side]=position。顺便说一句,您也可以使用@HostBinding。你能在 stackblitz 上准备一个最小的例子吗?? -
你能给个小提琴什么的吗?
标签: angular