1
我目前正在開發一個Angular 2項目,我只需要調用特定的函數,並且只在頁面上的所有元素都加載完畢後才能調用。我試圖從Observable中使用eventFrom函數,它在我期待「點擊」操作時工作,但是一旦我切換到「加載」它根本不會觸發。接下來,我嘗試使用Rxjs-DOM加載函數,但它沒有消防要麼Rxjs-DOM加載函數不激發角度2
下面是代碼我現在所擁有的:
ngAfterViewInit(): void {
let input = this.container.nativeElement.getElementsByClassName('list-item');
let source = Rx.DOM.load(input);
let subscription = source.subscribe((x) => {
console.log('Next!');
},
(err) => {
console.log('Error: ' + err);
},
() => {
let temp = this.container.nativeElement.getElementsByClassName('list-item');
console.log(temp.length);
});
}
<div class="list-wrapper">
<div class="list">
<div class="list-item" *ngFor="let item of items">
<img src={{item.image}} alt="{{item.title}}">
</div>
</div>
</div>
"@angular/core": "4.0.1",
"@types/rx-dom": "^7.0.0",
"angular2-infinite-scroll": "0.3.4",
"gulp-run": "1.7.1",
"rxjs": "5.2.1-smooth"
temp.length
始終是0 如果我設置一個timeout
日因爲所有元素都需要2-3秒才能加載,然後temp
不是空的。但在這種情況下暫停是不可取的。 有什麼我做錯了嗎? 另一個問題是,如果在Angular 2中有任何其他方式只有在所有dom元素都是ACTUALLY加載後才調用函數。
預先感謝您。
thanx您的回覆。我使用這個例子[https://blog.thoughtram.io/angular/2016/02/01/zones-in-angular-2.html],它似乎做我需要的工作。但是,這究竟是你的意思,還是我誤解了一些東西? – CannotCode
@ CannotCode是的,對於NgZone部分幾乎是一樣的。對於'異步調用',有時候它會通過調用'ngZone.run'退出角度區域或生命吊鉤,讓角度退出。 – Pengyy