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