0
ウィンドウの幅を700px以上にすると、要素を隠すべきディレクティブ(カスタム* ngIf)があります。私はウィンドウのサイズを変更すると私のデジェクティブは更新されず、要素は隠されませんが、常にthis.width
が更新されます。どのように修正できるか考えてみましょうか?次に例を示します。角度2 - ウィンドウのサイズを変更したときのディレクティブの更新
import { Directive, Input, TemplateRef, ViewContainerRef, HostListener,NgZone} from '@angular/core';
@Directive({
selector: '[ifViewportSize]'
})
export class ifViewportSize {
width:number;
constructor(private templateRef: TemplateRef<any>,
private viewContainer: ViewContainerRef,
private ngZone:NgZone) {
this.width = 600;
window.onresize = (e) => {
this.ngZone.run(() => {
this.width = window.innerWidth; // WIDTH UPDATING
});
};
}
@Input() set ifViewportSize(size: string){
if (this.width<700) {
// HERE IS NOT UPDATE
this.viewContainer.createEmbeddedView(this.templateRef);
} else {
this.viewContainer.clear();
}
}
}
プロジェクトのコードは、これはあなたを助けることができる* ngIf使用せず、ここでstackblitz