[英]How to detect a value change on an input when it is dynamically updated (Angular 6)
[英]How to detect change with same value @Input() in Angular?
我有一個帶有@Input()
的 Angular 自定義滾動指令,我在其中傳遞一個 HTML 元素作為參數,以將滾動條移動到該特定的 HTML 元素。
使用這種方法,如果我多次傳遞相同的 HTML 元素,則 Input 檢測僅在第一次發生變化之后才檢測到任何變化。
有沒有辦法強制 Angular 檢測相同輸入的變化?
@Input() set elementToScroll(element: HTMLElement) {
if (element != undefined) {
console.log(element); // Detecting first time only for same input
this._osInstance?.scroll(
{ el: element, block: { y: 'begin' } },
500
);
}
}
使用接口 OnChanges 擴展您的組件並實現 ngOnChanges 方法:
ngOnChanges(changes: SimpleChanges) {
if(changes['myProperty']) {
// myProperty has changed
}
}
如果您兩次設置相同的值,則根據值的類型,此解決方案有效或僅觸發一次。
請參閱以下示例的控制台輸出: https : //stackblitz.com/edit/angular-ivy-rd8szx
您還可以使用“技巧”,將對象{element:element}
傳遞給您的輸入
@Input() set elementToScroll(element:{element:HTMLElement}) {
//use element.element
if (element.element != undefined) {
console.log(element.element);
this._osInstance?.scroll(
{ el: element.element, block: { y: 'begin' } },
500
);
}
}
//in your parent you has some like:
@ViewChild('move') myElement:ElementRef
click(){
this.parameter={element:myElement.nativeElement}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.