簡體   English   中英

ngFor之后的Angular 2火災事件

[英]Angular 2 fire event after ngFor

我正在嘗試使用一個jQuery插件來替換Angular 2中某些動態元素內的默認滾動條。

這些元素是使用ngFor循環創建的,也就是說,我無法將jQuery事件附加到創建的元素上。

應用程序有時會更改ngFor內部ngForObservable對象,以呈現視圖。

現在,我想知道Angular完成繪制元素的時間,以便我可以運行jQuery插件。

  • 我不想在HTML模板中包含任何JavaScript。
  • 我不想使用ngAfterViewInit ,因為此掛鈎被觸發了太多次
  • 我不想實現基於setTimeout的解決方案(我認為這不可靠)

我通過使用以下自定義Pipe找到了解決方案:在模板的ngFor循環結束時,我寫了:

{{i | FireStoreEventPipe:'EVENT_TO_BE_FIRED'}}

其中FireStoreEventPipe類似於:

transform(obj: any, args:any[]) {
    var event = args[0];
    //Fire event
    return null;
}

但是這種解決方案並不令我滿意。

有什么更好的建議嗎?

謝謝

我有一個類似的問題。 我正在使用angular2 rc 1。

我通過創建一個新組件(指令對我不起作用)解決了它。

import { Component, Input, Output, EventEmitter } from '@angular/core';
@Component({
   selector: 'islast',
   template: '<span></span>'
})
export class LastDirective {
   @Input() isLast: boolean;
   @Output() onLastDone: EventEmitter<boolean> = new EventEmitter<boolean>();
   ngOnInit() {
      if (this.isLast)
        this.onLastDone.emit(true);
   }
}

然后,我將所需的組件作為子組件導入指令中:

directives: [LastDirective],

在html中:

<tr *ngFor="let sm of filteredMembers; let last = last; let i=index;" data-id="{{sm.Id}}">
     <td>
        <islast [isLast]="last" (onLastDone)="modalMembersDone()"></islast>
     </td>
 </tr>

並且當然實現modalMembersDone()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM